declare module '*.json' {
const json: any
export default json
}
핵심 의미
TypeScript 컴파일러에게 .json 파일을 임포트할 때 어떤 타입으로 처리하라고 알려주는 ambient module 선언
자세히 풀어보면
1. declare module '*.json' { … } 의 의미
declare module "<패턴>" { … } 은 TypeScript에 이런 이름의 모듈을 만났을 때, 아래에 정의된 타입 정보를 사용해라 라고 알려주는 구문입니다. 여기서 *.json 패턴은 확장자가 .json인 모든 파일을 가리킨다.
2. 내부 구조
const json: any;
export default json;
해당 모듈이 기본(default)으로 하나의 json 값을 갖는데, 타입은 any다. import foo from './data.json' 했을 때, foo 변수에 위 json 값이 바인딩된다고 컴파일러에게 알려줍니다.
3. 컴파일·런타임 동작 차이 런타임(JS)
이 선언은 .d.ts 파일에만 존재하고, 실제로 번들된 결과물(.js)에는 아무 코드도 생성되지 않습니다.
4. 왜 필요할까? tsconfig.json에서 resolveJsonModule: false인 경우, TS가 .json을 모듈로 자동 인식하지 않으므로 직접 선언이 필요합니다. resolveJsonModule: true라도, 구체적인 JSON 스키마 타입 대신 any로 처리하고 싶을 때 쓰기도 합니다.
'IT > typescript' 카테고리의 다른 글
| [typescript] generic extends 문법 (0) | 2025.08.14 |
|---|---|
| [typescript] esModuleInterop (0) | 2025.07.09 |
| [typescript] WeakRef (0) | 2024.12.28 |
| [typescript] AtLeastOneRequired (0) | 2024.12.16 |
| [typescript] -? 의미 (0) | 2024.12.05 |