๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
TS

[TS] : .d.ts

by ๊ถŒ์Šพํ–„ 2023. 8. 17.

 

@types ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

TS ๋Š” @types ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•ด์„œ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ํƒ€์ž… ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค !!

์œ„์— ์žˆ๋Š” ์ˆ˜๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋””๋ ‰ํ† ๋ฆฌ์— ๋“ค์–ด๊ฐ€๋ณด๋ฉด

์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ์€ .d.ts ํŒŒ์ผ๋“ค์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

.d.ts ? 

์œ„ ํŒŒ์ผ์€ JS์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ TS์˜ ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋…€์„์ด๋‹ค.

import ํ•˜๊ณ ์‹ถ์€ JS ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์–ด๋–ค ํƒ€์ž…์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€ .d.ts ํŒŒ์ผ์ด ํƒ€์ž…์„ ์ •์˜ํ•ด ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.
๊ทธ๋ ‡๊ฒŒ TS ์—์„œ JS์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

.d.ts ํŒŒ์ผ์„ ํ†ตํ•ด tsc ๋Š” ๋‹ค์Œ ์ •๋ณด๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

  • ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํ•จ์ˆ˜ ํƒ€์ž… ์ •๋ณด
  • ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํด๋ž˜์Šค ํƒ€์ž… ์ •๋ณด
  • ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฐ์ฒด ํƒ€์ž… ์ •๋ณด

๊ทธ๋Ÿฌ๋‹ˆ JS์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ TS์—์„œ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ .d.ts ํŒŒ์ผ์„ ์ œ๊ณตํ•ด์ฃผ๋ฉด ๋œ๋‹ค.
TS ํ”„๋กœ์ ํŠธ์—์„œ๋„ JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ•œ ์ค„๋„ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ์“ธ ์ˆ˜ ์žˆ๋‹ค.

 

JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ TS ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ

1. node ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

npm init -y

 

2. tsconfig.json ์„ ์ƒ์„ฑํ•˜์—ฌ TS ํ”„๋กœ์ ํŠธ๋กœ ๋ณ€ํ™˜

tsc --init

 

3. ์ƒ์„ฑ๋œ tsconfig.json ์—์„œ ์„ค์ • ์˜ต์…˜ ์ฃผ์„ ํ•ด์ œํ•˜๊ธฐ.

"allowJs": true // TypeScript ํ”„๋กœ์ ํŠธ์— JavaScript ํŒŒ์ผ ํ—ˆ์šฉ ์—ฌ๋ถ€
"checkJs": true // JavaScript ํŒŒ์ผ ํƒ€์ž… ์ฒดํฌ ์—ฌ๋ถ€

 

4. TS ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ์ปค์Šคํ…€ JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด ๋‘”๋‹ค.

/**
 * @param {number} a
 * @param {number} b
 * @returns {number}
 */
export function add(a, b) {
  return a + b;
}

์œ„์— ์‚ฌ์šฉํ•œ ์ฃผ์„๋ฌธ์€ JSDoc ์ด๋‹ค.

JSDoc ์€ API์˜ ์ธ์ž , ๋ฆฌํ„ดํƒ€์ž…์„ ์„ค๋ช…ํ•˜๋Š” html ๋ฌธ์„œ ์ƒ์„ฑ๊ธฐ์ด๊ณ ,
JSDoc ์„ ํ†ตํ•ด์„œ ์šฐ๋ฆฌ๋Š” JS ์†Œ์Šค์ฝ”๋“œ์— ๋Œ€ํ•œ ํƒ€์ž…ํžŒํŠธ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.

์œ„ JSDoc ํ•ด์„์€ parma์— ๋“ค์–ด๊ฐ€๋Š” a์™€ b์˜ ํƒ€์ž…์„ ์ค‘๊ด„ํ˜ธ์•ˆ์˜ number๋กœ ๋ช…์‹œ, retunr ๊ฐ’ ๋˜ํ•œ number๋กœ ๋ช…์‹œ๋ฅผ ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค.

 

5. JSDoc์œผ๋กœ ํƒ€์ž… ํžŒํŠธ๊ฐ€ ์ œ๊ณต๋œ JSํŒŒ์ผ์˜ .d.ts ํŒŒ์ผ์„ ๋งŒ๋“ ๋‹ค.

npx tsc 01.js --declaration --allowJs --emitDeclarationOnly --outDir types

ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด์„œ type๋ผ๋Š” ํด๋”๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ๊ณ  ๊ทธ ์•ˆ์— 01.d.ts ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๊ฑธ ํ™•์ธํ–ˆ๋‹ค.

 

6. ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  TS ํŒŒ์ผ ์ƒ์„ฑ

// 01.ts

import { add } from './01'; // 01.js export ํ•จ์ˆ˜์ธ add ๊ฐ€์ ธ์˜ด
console.log(add(1, 2));

์ด๋ ‡๊ฒŒ ํ•˜๋‹ˆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

์˜ค๋ฅ˜ ๋‚ด์šฉ์€ ํ˜„์žฌ add ๋ฅผ export ํ•ด์ฃผ๋Š” JS ํŒŒ์ผ๋ช…๋„ 01.js ์ด๋ฉฐ, JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  TS ํŒŒ์ผ๋ช… ๋˜ํ•œ 01.ts ์ด๋ฏ€๋กœ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜์ธ ๊ฒƒ ๊ฐ™๋‹ค.

ts ํŒŒ์ผ๋ช…์„ ๋ณ€๊ฒฝํ•ด๋ณด์ž

01.ts ๋ฅผ test.ts๋กœ ํŒŒ์ผ๋ช…์„ ๋ณ€๊ฒฝํ•˜๋‹ˆ ์œ„์˜ ์˜ค๋ฅ˜๋Š” ํ•ด๊ฒฐ์ด ๋˜์—ˆ๋‹ค.

 

๊ทผ๋ฐ ๋˜ ๋‹ค๋ฅธ ์˜ค๋ฅ˜๊ฐ€ ์ถœ๋ ฅ ๋˜์—ˆ๋‹ค.

01.ts ํŒŒ์ผ์„ ์ฐพ์„์ˆ˜ ์—†๋‹ค๊ณ  ํ•œ๋‹ค.

 

tsconfig.json ํŒŒ์ผ์— include ์˜ต์…˜์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

include ๋Š” ์ตœ์ƒ์œ„ ์˜ต์…˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

{
  "include": [
    "TS/test.ts",
    "src/**/*.ts"
  ],
  "compilerOptions": {
	...
  }
}

๊ทธ๋ž˜๋„ ํ•ด๊ฒฐ์ด ๋˜์ง„ ์•Š์•˜๋‹ค.

 

์œ„ ์˜ค๋ฅ˜๋ฅผ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋ฌผ์–ด๋ดค์ง€๋งŒ, ํ•ด๊ฒฐ์„ ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.

๋‹ค๋งŒ ์ฝ”๋“œ์ƒ์—์„œ ์‹คํ–‰์‹œ์— ๋ฌธ์ œ๋˜๋Š” ๋ถ€๋ถ„์ด ์—†์—ˆ๊ณ , ์œ„ ์˜ค๋ฅ˜๋Š” IDE ์ž์ฒด์˜ ๋ฌธ์ œ๊ฐ€๋Šฅ์„ฑ์ผ ๊ฒฝ์šฐ๊ฐ€ ๋†’์€๊ฑธ๋กœ ํŒ๋‹จ์ด ๋œ๋‹ค.

 

7. TS ํŒŒ์ผ์„ ์‹คํ–‰ํ•ด๋ณธ๋‹ค.

npx ts-node test.ts

 

์ถœ๋ ฅ ๊ฐ’

3

 

 

 

#d_ts #JS๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ #TS์—์„œ๋„ #์‚ฌ์šฉํ•ด๋ณด์ž #๊ฐ™์€ํŒŒ์ผ๋ช… #์˜ค๋ฅ˜ #ํ•ด๊ฒฐ #include #์ตœ์ƒ์œ„์˜ต์…˜ #tsconfig_json