선언 파일(Declaration File, .d.ts)은 실행 코드 없이 타입 정보만 담은 파일이다. JavaScript로 작성된 라이브러리나 전역 값의 모양을 TypeScript에게 알려 준다.
- JS 라이브러리를 import했는데 타입 에러가 나면, 먼저 커뮤니티 타입 패키지를 찾는다:
npm i -D @types/lodash. DefinitelyTyped 저장소에서 관리된다 - 요즘 라이브러리는 패키지 안에
.d.ts를 같이 배포하는 경우가 많다. 직접 라이브러리를 만들면 tsconfig의declaration: true로 생성한다(tsconfig 핵심 옵션) - HTML(HyperText Markup Language)의
<script>나 빌드 도구가 주입한 전역 변수처럼 TS가 모르는 값은declare로 존재만 알린다
declare const __APP_VERSION__: string // 빌드 때 치환되는 전역
declare module '*.svg' { // 확장자 import의 타입
const src: string
export default src
}declare는 "어딘가에 있다"는 약속일 뿐 검증하지 않는다. 틀리게 적으면 런타임에 깨진다- 기존 전역 타입을 늘릴 때는 interface의 선언 병합(Declaration Merging)을 쓴다(type과 interface)
- 모듈 시스템과의 관계는 ES 모듈과 CommonJS. 타입으로 적은 계약 밖의 동작에도 사용자가 의존하게 된다는 점은 하이럼의 법칙