-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
아이템 7 타입이 값들의 집합이라고 생각하기
집합의 관점에서 타입체커는 부분집합인지를 체크한다고 보면된다.
|는 유니온, 합집합이라고 보면된다.
&는 인터섹션이라고 보면되는데, 인터페이스간의 & 연산은 속성의 합집합 역할을 해준다.
- keyof (A&B) = (keyof A) | (keyof B)
- keyof (A|B) = (keyof A) & (keyof B)
아이템 8 타입공간과 값 공간 구분하기
- 타입스크립트 플레이그라운드를 잘 활용하는 것이 좋음
- 모든 값은 타입을 가지지만, 타입은 값을 가지지 않는다.
- class, enum둘 다 로 이용될 수 있다.
- "foo"는 문자열 리터럴이거나 타입일 수 있다.
- typeof, this 등 맥락에 따라 타입/값 공간에서 다른 의미로 사용가능하다.
아이템 9 타입 단언보다는 타입 선언 사용하기
- 타입 단언을 사용하면 잉여속성체크나 인터페이스가 맞는지 확인이 안됨.
- 타입단언은 타입체커에게 오류를 무시하라는 것과 같음
- 돔 접근과 같이 타입스크립트가 모르는 부분의 에러는 사용자가 강제로 타입단언이나, null 단언
!을 사용하는게 타당하다.
아이템 10 객체 레퍼 타입 피하기
- 예를들어 타입선언을
String으로 하게되면 스트링 리터럴 값이 들어올 때 에러가난다. (String형식의 인수는string형식의 매개변수에 할당할 수 없음.)
아이템 11 잉여 속성 체크의 한계 인지하기
- 객체 리터럴을 변수에 할당하거나 함수의 매개변수로 전달할 때 잉여 속성 체크가 수행된다.
- 잉여속성체크를 막으려면 임시 변수를 도입하면 된다.
아이템 12 함수 표현식에 타입 적용하기
- 매개변수나 반환값에 타입을 명시하는 것 보다 함수 표현식 전체에 타입 구문을 적용하는 것이 좋다.
- 같은 타입 시그니처를 반복적으로 작성하는 것 보다 함수 타입을 분리해내거나 이미 존재하는 타입을 찾아보는 것이 좋다.
- typeof fn을 사용해서 다른 함수의 시그니처를 참조할 수 있다.
Metadata
Metadata
Assignees
Labels
No labels