Facts
- 인프런 타입스크립트 입문 강의를 완강하였다!
Feelings
- 전에 리액트 프로젝트에서 타입스크립트를 사용하면서는 ts 언어를 제대로 이해하지 않은 채로 다른 코드를 붙여넣기하거나 모르는 키워드가 나오면 구글에 검색을 하면서 코딩했었는데 확실히 강의를 들으면서 ts 언어를 제대로 배우니까 왜 프로젝트에서 ts 언어를 사용하는 지를 알았다. 간단한 프로젝트에서는 js로 충분히 커버가 가능하지만 프로젝트 규모가 커질수록 ts를 사용해서 타입 체킹 기능을 추가하면 사전에 버그를 방지하고 유지보수 측면에서 등 굉장히 유용한 점이 많겠다고 느꼈다. 새로 배운 내용들을 프로젝트에 빨리 적용시켜보고 싶다.
- 타입스크립트 입문 강의까지만 들으려고 했는데 강사님이 강의 마지막에 실전강의를 추천해주셨다. 들을까 말까 고민된다..
Findings
ts 타입 호환(Type Compatibility)
- typescript 코드엥서 특정 타입이 다른 타입에 잘 맞는지를 의미
구조적 타이핑
- 타입이 같지 않아도 구조적으로 봤을때 오른쪽에 있는 타입이 더 컸을 때(왼쪽 타입의 속성을 전부다 가지고 더 많은 속성을 가질 때) 호환이 된다.
- interface, class로 정의된 두 타입 사이에서도 내부적으로 존재하고 있는 속성과 속성에 대한 타입을 비교했을 때 오른쪽 타입이 구조적으로 더 크다면 왼쪽과 호환이 된다.
함수끼리의 호환 가능성
내부 로직과 return type은 상관 없이 왼쪽 함수의 인자 타입들이 순서대로 오른쪽 함수 인자 타입에 앞에서부터 포함되는 경우에 호환이 가능하다.
인자 타입들이 순서가 다른 경우는 호환이 안 됨
Best Common Type
- 어떤 변수에 대한 타입이 몇 개의 표현식(코드)을 바탕으로 추론될 때 여러 표현식의 타입들로부터 ‘best common type’이 계산되어 변수의 타입이 추론된다.
가장 근접한 타입 혹은 가장 근접한 타입을 추론하는 알고리즘
- 배열의 타입을 추론하기 위해 배열의 각 아이템을 살펴봄 → 3 choices: number, boolean, string → ‘best common type’ 알고리즘은 3개의 선택지를 다 고려하여 모든 타입 후보들과 호환될 수 있는 타입으로 추론 → (string | number | boolean)
Future Action Plans
- 프론트엔드 개발환경 세팅 강의 수강 완료하기.
- 타입스크립트 실전 강의 빠르게 수강 완료하기.