package.json
`types` 또는 `typings` 필드가 있으면 자체 타입을 쓴다.
외부 라이브러리 타입 오류가 나면 먼저 패키지가 타입을 포함하는지 보고, 없으면 DefinitelyTyped를 찾는다. 마지막에만 필요한 표면을 직접 선언하고 any는 격리한다.
`types` 또는 `typings` 필드가 있으면 자체 타입을 쓴다.
DefinitelyTyped 패키지와 라이브러리 버전을 맞춘다.
실제 사용하는 API만 좁게 선언한다.
`types`와 `typeRoots`로 전역 타입 포함 범위를 관리한다.
"types": "dist/index.d.ts"
라이브러리 릴리즈와 함께 관리됨
버전 업그레이드 시 breaking change를 확인한다.
`@types/package` 설치
레거시 JS 라이브러리도 타입 힌트를 얻는다.
런타임 패키지와 타입 패키지 버전 차이를 본다.
`custom-types/*.d.ts`
필요한 API만 빠르게 보강한다.
실제 export와 계속 대조해야 한다.
최후의 임시 우회
타입 검사를 통째로 잃는다.
서비스 경계 밖으로 퍼지지 않게 격리한다.
기본적으로 TypeScript는 패키지 types와 node_modules/@types를 찾는다.
`types`를 쓰면 전역으로 포함할 패키지를 명시적으로 줄인다.
`typeRoots`는 직접 만든 선언 폴더를 탐색 대상에 넣는다.