타입스크립트(TS)

엠비언트 타입(Ambient Type)(.d.ts)

goodchuck 2024. 11. 2. 18:31

목차

     

     

    엠비언트 타입이란?

    코드 외부에서 정의된 객체, 라이브러리, 전역 변수 등의 타입을 명시하기 위해 사용

    주로 타입 정의 파일(.d.ts)로 제공되며, 외부 모듈이나 브라우저 API 같은 것을 사용할 때 타입을 명확히 하기 위해 사용함. 이 방식으로 타입스크립트 코드가 특정 환경의 정의를 알 수 있도록 돕고, 타입 안정성을 유지할 수 있게 한다.

    .d.ts 확장자를 가진 파일에서는 타입 선언만 할 수 있으며 값을 표현할 수는 없다.

     

    엠비언트 타입의 주요 사용 사례

    1. 외부 라이브러리 정의 : @types 패키지를 통해 사용되는 외부 라이브러리의 타입을 정의한다.
    2. 전역 객체 정의 : 프로젝트에서 정의한 전역 변수, 함수, 객체의 타입을 명시할 때 활용 한다.
    3. 모듈 보강 : 외부 모듈에 새로 추가된 API나 보강할 타입을 추가할 때 사용한다.

    엠비언트 선언 구문

    타입스크립트에서 엠비언트 선언은 declare 키워드를 통해 이루어진다. 이를 통해 타입스크립트는 코드의 실제 구현 없이 타입을 인식할 수 있게 된다.

    // 전역 변수의 엠비언트 선언
    declare const API_URL: string;
    
    // 전역 함수의 엠비언트 선언
    declare function logMessage(message: string): void;
    
    // 전역 객체의 엠비언트 선언
    declare namespace MyApp {
      const version: string;
      function initialize(): void;
    }

     

    모듈을 위한 엠비언트 타입 선언

    Node.js 또는 ES 모듈에서 특정 모듈의 타입을 정의해야 할 때 declare module 을 사용한다.

    // lodash 같은 외부 라이브러리의 타입을 선언
    declare module "lodash" {
      export function chunk<T>(array: T[], size: number): T[][];
    }

     

    예시 .d.ts 파일을 이용한 엠비언트 타입 정의

    global.d.ts라는 파일을 만들어 전역 타입을 정의하는 것도 일반적인 방법이다. 이 파일을 통해 프로젝트 전반에 걸쳐 전역 타입을 사용할 수 있다.

    // global.d.ts
    declare global {
      interface Window {
        myCustomProperty: string;
      }
    }
    
    export {};