우선 import, export가 없이 고립되어 타입만 정의된 파일은 기본적으로 전역 타입으로 선언된다. 전역을 오염시킬 수 있기 때문에, 고립된 형태로 타입을 정의하면 오류를 발생시키도록 config를 설정할 수 있다.
{
"compilerOptions": {
"isolatedModules": true, // 고립된 모듈이 있는지 확인
}
}
그렇다면 위의 옵션을 설정한 상태로 전역 타입을 지정하고 싶은 경우 어떻게 해야할까?
d.ts는 타입을 정의하기 위한 포맷이다. 이 곳에서는 export, import를 사용하지 않고 isolatedModule을 정의할 수 있다.
즉, 파일 내에 전역 타입을 지정하기 위한 용도로 d.ts를 사용할 수 있다.
// kakaoAPI.d.ts
declare module kakaoAPI {
export namespace map {
}
...
}
// global.d.ts
let name: string;
// modalWindow.ts
export default class ModalWindow extends HTMLElement {
...
}
declare global {
interface HTMLElementTagNameMap {
'modal-window': ModalWindow;
}
}