앰비언트 선언 (Ambient Declarations & d.ts)
타입스크립트가 존재하지 않던 자바스크립트 라이브러리에게 "이런 변수나 함수가 어딘가에 존재하니까 에러 내지 마!"라고 알려주는 declare 키워드와 .d.ts 파일의 개념입니다.
🛂 입국 심사 패스 (Ambient Declarations)
JS 파일로만 이루어진 구형 라이브러리나 전역 변수를 사용할 때,
TS 컴파일러의 깐깐한 입국 심사(타입 에러)를 무사히 통과하기 위해 발급하는 비자입니다.
// 이 코드는 .ts 또는 .d.ts 파일에 작성됩니다.
// 1. 전역 변수 선언 (HTML 스크립트 태그로 로드된 구형 라이브러리)
declare const jQuery: (selector: string) => any;
declare const $: (selector: string) => any;
$("#my-btn").click(); // 에러 없이 통과! (구현은 외부 JS에 있음)
// 2. 모듈 선언 (타입이 없는 npm 패키지)
declare module "some-untyped-module" {
export function doSomething(value: string): boolean;
export const version: string;
}
// 3. 에셋 파일 선언 (웹팩, Vite 등에서 이미지/CSS 임포트 허용)
declare module "*.png" {
const content: string;
export default content;
}
import logo from "./logo.png"; // 이제 타입 에러가 발생하지 않습니다.