[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)
  • 태그

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

티스토리툴바