"Declaration 파일이 구현 없이 모양 묘사. TypeScript 가 타입 안 붙은 JavaScript 타입 붙이는 법."
`.d.ts` 파일이 뭐
`.d.ts` 파일이 타입 정보만 담음 — 변수, 함수, class, module 의 선언. 함수 body 없음, class body 없음, 값 없음. Compiler 가 읽어서 JavaScript module 이 어떤 타입 export 하는지 이해.
npm 의 대부분 library 가 자기 `.d.ts` 파일을 `.js` 와 함께 ship. 안 하면 community-maintained `@types/library-name` 패키지가 보통 제공. TypeScript compiler 가 자동으로 둘 다 찾음.
자기 거 쓰기
타입 안 붙은 JavaScript library 쓸 때, `.d.ts` 파일 써서 TypeScript 한테 뭐 export 하는지 말할 수. `tsconfig.json` 의 `include` 가 cover 하는 어디든 둬 — 보통 프로젝트 root 또는 `types/` 디렉토리.
// custom-lib.d.ts
declare module 'custom-lib' {
export function doThing(x: number): string;
export interface Config { host: string }
}
이제 import { doThing } from 'custom-lib' 가 library 가 embedded 타입 없어도 적절한 타입과 함께 컴파일.
TypeScript standard library
Array, Map, Set, Promise, fetch, document 등의 타입이 다 `node_modules/typescript/lib/` 안의 `.d.ts` 파일에 살아. ES5 엔 `lib.es5.d.ts`; 브라우저엔 `lib.dom.d.ts`; 더 새 ES 기능엔 `lib.es2022.d.ts`. Tsconfig `lib` 옵션이 어느 게 load 될지 제어.