type discovery

타입 정의는 자체 제공, @types, 직접 선언 순서로 확보한다

외부 라이브러리 타입 오류가 나면 먼저 패키지가 타입을 포함하는지 보고, 없으면 DefinitelyTyped를 찾는다. 마지막에만 필요한 표면을 직접 선언하고 any는 격리한다.

01

package.json

`types` 또는 `typings` 필드가 있으면 자체 타입을 쓴다.

02

@types 검색

DefinitelyTyped 패키지와 라이브러리 버전을 맞춘다.

03

직접 .d.ts

실제 사용하는 API만 좁게 선언한다.

04

검색 범위 설정

`types`와 `typeRoots`로 전역 타입 포함 범위를 관리한다.

자체 타입
"types": "dist/index.d.ts"

라이브러리 릴리즈와 함께 관리됨

버전 업그레이드 시 breaking change를 확인한다.

@types

`@types/package` 설치

레거시 JS 라이브러리도 타입 힌트를 얻는다.

런타임 패키지와 타입 패키지 버전 차이를 본다.

직접 선언

`custom-types/*.d.ts`

필요한 API만 빠르게 보강한다.

실제 export와 계속 대조해야 한다.

any

최후의 임시 우회

타입 검사를 통째로 잃는다.

서비스 경계 밖으로 퍼지지 않게 격리한다.

자동 탐색

기본적으로 TypeScript는 패키지 types와 node_modules/@types를 찾는다.

범위 제한

`types`를 쓰면 전역으로 포함할 패키지를 명시적으로 줄인다.

커스텀 경로

`typeRoots`는 직접 만든 선언 폴더를 탐색 대상에 넣는다.