[TypeScript] d.ts

2022. 7. 12. 16:24·TypeScript/기초
반응형

TypeScript로 프로젝트를 진행하다 보면 d.ts 파일을 보게 된다. 

d.ts 파일은 타입만 저장할 수 있는 파일 형식이다. 

 

사용하는 이유는 

  1. 타입 정의만 따로 저장해서 import 하기 위해서
  2. 프로젝트에서 사용하는 타입을 쭉 정리하는 레퍼런스용으로 사용

타입만 모아서 정의하는 d.ts

파일명.d.ts라고 작성한 파일은 type 키워드, interface 같은 타입 정의만 넣을 수 있다. 

 

함수의 경우엔 { } 중괄호 붙이는 게 불가능하고 파라미터 & return 타입만 지정 가능하다.

export type Age = number;
export type multuply = (x :number, y :number) => number
export interface Person { name :string }

 

d.ts 파일은 ts파일이 아니기 때문에 그냥 사용하더라도 ambient module이 되지 않는다. 

그래서 export를 사용해야 다른 ts 파일에서 사용할 수 있다. 

 

한 번에 많은 타입을 export 하고 싶은 경우 namespace를 사용하거나 import * as 파일 문법을 사용한다. 

 

레퍼런스용으로 사용하는 d.ts

타입스크립트 파일마다 자동으로 d.ts 파일을 생성하길 희망하면, 

// tsconfig.json

{
    "compilerOptions": {
        // ...
        "declaration": true
    }
}

tsconfig.json에서 declaration 옵션을 true로 변경하면 된다. 

그럼 저장할 경우 자동으로 타입스크립트 파일마다 d.ts 파일이 옆에 생성된다. 

 

// index.ts

let name :string = 'kim';
let age = 20;
interface Person { name : string } 
let person :Person = { name : 'park' }

타입스크립트 파일에 작성을 한다면 

// index.d.ts

declare let name: string;
declare let age: number;
interface Person {
    name: string;
}
declare let person: Person;

자동으로 모든 변수와 함수의 타입 정의가 들어간다. 

자동생성으로 만들어지기 때문에 따로 수정을 할 수 없고 레퍼런스용으로 사용한다. 

 

export 없이 d.ts 파일을 글로벌 모듈로 만들기

d.ts 파일은 import와 export가 없어도 로컬 모듈이다. 

그래서 다른 타입스크립트 파일에서 import를 통해서만 사용할 수 있는데, 옵션을 통해 글로벌 모듈로 만들 수 있다.

// tsconfig.json

{
    "compilerOptions": {
        // ...
        "typeRoots": ["./types"]
    }
}

typeRoots 옵션에 원하는 폴더를 입력하게 되면 타입스크립트 파일을 작성할 때 타입이 없으면 자동으로 

해당 폴더에서 타입을 찾아서 적용해준다. 

 

하지만 파일이 많아지면 겹치는 문제나, 신경 쓰는 부분이 많아져서 되도록이면 import / export 방식을 추천한다. 

반응형
저작자표시 비영리 변경금지 (새창열림)

'TypeScript > 기초' 카테고리의 다른 글

[TypeScript] object index signatures  (0) 2022.09.08
[TypeScript] implements 키워드  (1) 2022.07.13
[TypeScript] Declare & Ambient Module  (1) 2022.07.11
[TypeScript] Tuple Type  (2) 2022.07.10
[TypeScript] React에서 사용하기_2편  (1) 2022.07.10
'TypeScript/기초' 카테고리의 다른 글
  • [TypeScript] object index signatures
  • [TypeScript] implements 키워드
  • [TypeScript] Declare & Ambient Module
  • [TypeScript] Tuple Type
잉여개발자
잉여개발자
풀스택 개발자를 목표로 잉여롭게 개발 공부도 하면서 다양한 취미 생활도 즐기고 있는 잉여 개발자입니다.
  • 잉여개발자
    잉여로운 개발일지
    잉여개발자
    • 분류 전체보기 (789)
      • 개발정보 (36)
      • 개발환경 (7)
      • 개발생활 (19)
      • React (141)
        • 이론 (23)
        • 기능 (12)
        • 실험실 (88)
        • 버그 (6)
        • 패스트캠퍼스 (9)
        • Npm (3)
      • React Native (28)
        • 공통 (6)
        • TypeScript (3)
        • JavaScript (18)
        • 버그 (1)
      • Next.js (30)
        • 이론 (13)
        • 실험실 (13)
        • 버그 (3)
      • Web (35)
      • 알고리즘 (202)
        • 풀이 힌트 (39)
      • JavaScript (47)
      • TypeScript (29)
        • 기초 (27)
        • 실험실 (2)
      • Node.js (13)
        • 이론 (0)
        • 기능 (3)
        • 실험실 (9)
        • 버그 (1)
      • 도커 (4)
      • CCNA (22)
        • 이론 (4)
        • 문제 (18)
      • 취미생활 (167)
        • 잉여로운 칵테일 (2)
        • 잉여의 식물키우기 (130)
        • 잉여로운 여행기 (11)
        • 잉여의 제2외국어 (21)
        • 잉여로운 책장 (2)
      • Java (1)
        • Java의 정석 (1)
      • 꿀팁 공유 (3)
  • 태그

    덤프
    바질
    영어독학
    식물
    네이버 부스트캠프
    webpack
    redux
    다이소
    타일러영어
    리액트
    리얼학습일기
    바질 키우기
    react
    typescript
    네트워크
    프로그래머스
    ReactNative
    next.js
    리얼클래스
    CSS
    ChatGPT
    영어회화
    Babel
    CCNA
    javascript
    타입스크립트
    알고리즘
    Node.js
    자바스크립트
    Docker
  • hELLO· Designed By정상우.v4.10.1
잉여개발자
[TypeScript] d.ts
상단으로

티스토리툴바