이펙티브 타입스크립트 6장

세니·2024년 4월 28일

6장 타입 선언과 @types

아이템 45 - devDependencies에 typescript와 @types 추가하기

  1. 타입스크립트 자체 의존성을 고려
  2. @types를 고려

타입스크립트를 시스템 레벨에서 설치하지 말고 프로젝트에 devDependencies에 추가하고 팀원 모두가 같은 버전을 사용해야 한다.

@types 의존성은 devDependencies에 포함시켜야 한다.

아이템 46 - 타입 선언과 관련된 세 가지 버전 이해하기

타입스크립트를 사용할때 세 가지 버전을 고려해야 한다.

  • 라이브러리 버전
  • 타입 선언 @types 버전
  • 타입스크립트 버전

하나라도 맞지 않는다면 의존성에 관계없어 보이는 곳에 오류 발생할 가능성이 있다.

라이브러리 업데이트 하면 @types도 업데이트 해야한다.

아이템 47 - 공개 API에 등장하는 모든 타입을 익스포트하기

공개 메서드에 등장한 어떤 형태의 타입이든 export한다.

아이템 48 - API 주석에 TSDoc 사용하기

TSDoc을 이용하면 편집기가 정보를 표시해준다. 다만 주석에 타입 정보를 포함하면 안된다.

아이템 49 - 콜백에서 this에 대한 타입 제공하기

this는 다이나믹 스코프로 호출된 방식에 따라 달라진다.
타입스크립트는 자바스크립트를 모델링 하기에 콜백 함수에서 this를 사용한다면 타입 정보를 명시해야 한다.

아이템 50 - 오버로딩 타입보다는 조건부 타입을 사용하기

오버로딩 타입이 작성하기는 쉽지만, 조건부 타입은 개별 타입의 유니온으로 일반화하기 때문에 타입이 더 정확해진다.
각각의 오버로팅 타입이 독립적으로 처리되는 반면 조건부 타입은 타입 체커가 단일 표현식으로 받아들이기 때문에 유니온 문제를 해결할 수 있다.

아이템 51 - 의존성 분리를 위해 미러 타입을 사용하기

작성 중인 라이브러리가 의존하는 라이브러리의 구현과 무관하게 타입에만 의존한다면, 필요한 선언부만 추출하여 작성 중인 라이브러리에 넣는 것(미러링)을 고려하는 것도 좋다.

아이템 52 - 테스팅 타입의 함정에 주의하기

타입 선언을 테스트하기는 어렵다.
타입 선언이 예상한 타입으로 결과를 내는지 체크 할 수 있는 방법은 함수를 호출하는 테스트 파일을 작성하는 것이다.

타입 관련된 테스트에서 any를 주의해야 한다. 더 엄격한 테스트를 위해 dtslint도구가 있다.

profile
세니는 무엇을 하고 있을까

0개의 댓글