[Effective Typescript Study] week_6

Dae-Hee·2022년 10월 4일
0

Typescript Study

목록 보기
9/11
post-thumbnail

6주차 Item 45 ~ 52


▪︎ Item 45 - devDependencies에 typescript와 @types 추가 하기

  • 타입스크립트를 시스템 레벨로 설치하면 안된다. 타입스크립트를 프로젝트의 devDependencies에 포함시키고 팀원 모두가 동일한 버전을 사용하도록 해야한다.

  • @types 의존성은 dependencies가 아니라 devDependencies에 포함시켜야 한다. 런타임에 @types가 필요한 경우라면 별도의 작업이 필요할 수 있다.


▪︎ Item 46 - 타입 선언과 관련된 세 가지 버전 이해하기

  • @types 의존성과 관련된 세 가지 버전이 있다.
    1. 라이브러리 버전
    2. @types 버전
    3. 타입스크립트 버전
  • 라이브러리를 업데이트하는 경우, 해당 @types 역시 업데이트 해야한다.

  • 타입 선언을 라이브러리에 포함하는 것과 DefinitelyTypesd에 공개하는 것 사이의 장단점을 이해해야한다.

  • 타입스크립트로 작성된 라이브러리라면 타입선언을 자체적으로 포함하고, 자바스크립트로 작성된 라이브러리라면 타입 선언을 DefinitelyTypesd에 공개하는 것이 좋다.


▪︎ Item 47 - 공개 API에 등장하는 모든 타입을 익스포트하기

interface SecretName {
  a: string;
  b: string;
}

interface SecretSanta {
  name: SecretName;
  gift: string;
}

export function getGift(name: SecretName, gift: string): SecretSanta {
  //...
}
SecretName와 SecretSanta를 export 하지 않았기 때문에
getGift함수만 import가 가능하다.
그러나 타입들은 export된 함수 시그니처에 등장하기 때문에 
아래와 같이 ReturnType과 Parameters로 추출해 낼 수 있다.
type MySanta = ReturnType<typeof getGift>; // SecretSanta
type MyName = Parameters<typeof getGift>[0]; // SecretName
  • 하지만 공개 메서드에 등장한 어떤 형태의 타입이든 명시적으로 익스포트 하는 것이 좋다.

▪︎ Item 50 - 오버로딩 타입보다는 조건부 타입을 사용하기

  • 오버로딩 타입보다 조건부 타입을 사용하는 것이 좋다.

  • 조건부 타입은 추가적인 오버로딩 없이 유니온 타입을 지원할 수 있다.

0개의 댓글