Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2장(~아이템12까지) 정리 #17

Open
hyunahOh opened this issue Sep 25, 2022 · 0 comments
Open

2장(~아이템12까지) 정리 #17

hyunahOh opened this issue Sep 25, 2022 · 0 comments

Comments

@hyunahOh
Copy link
Collaborator

아이템 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을 사용해서 다른 함수의 시그니처를 참조할 수 있다.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant