λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

typescript

TypeScript / νƒ€μž… μ„ μ–Έ 파일

Type declaration file

μžλ°”μŠ€ν¬λ¦½νŠΈ λ‚΄μž₯ 객체, λ˜λŠ” μ™ΈλΆ€ 라이브러리, API 등을 μ„€λͺ…ν•˜λŠ” 파일둜,  .d.ts 의 ν™•μž₯자λ₯Ό κ°€μ§„λ‹€.

μ‹€μ œ κ΅¬ν˜„μ€ ν¬ν•¨ν•˜μ§€ μ•ŠμœΌλ©°. νŠΉμ • νƒ€μž…μ΄ μ‘΄μž¬ν•œλ‹€λŠ” 것을 μ„ μ–Έν•œλ‹€.

 

 

 

console.log()μ—μ„œ console에 λŒ€κ³  ⌘ ν‚€λ₯Ό λˆ„λ₯Έμ±„λ‘œ 클릭해보면 우츑처럼 lib.dom.d.ts νŒŒμΌμ„ 확인할 수 μžˆλ‹€. 

νŒŒμΌμ„ 보면 μ•Œκ² μ§€λ§Œ .ts νŒŒμΌμ—λŠ” 싀행이 κ°€λŠ₯ν•œ κ΅¬ν˜„ μ½”λ“œλ₯Ό μž‘μ„±ν•œλ‹€λ©΄,

 .d.ts  νŒŒμΌμ—λŠ” νƒ€μž… μ •λ³΄λ§Œ ν¬ν•¨ν•˜κ³  μžˆλ‹€.  .d.ts νŒŒμΌμ€ νƒ€μž… 정보λ₯Ό μ œκ³΅ν•΄ νƒ€μž… 검사λ₯Ό μ§„ν–‰ν•˜κ³  js ν˜Έν™˜μ„±μ„ μ œκ³΅ν•˜λŠ” 역할을 ν•œλ‹€.

 

 

 

μ˜ˆμ‹œ

μ™ΈλΆ€ 라이브러리λ₯Ό μ„€λͺ…ν•˜λŠ” 역할도 ν•œλ‹€κ³  ν–ˆμœΌλ―€λ‘œ μž„μ˜μ˜ 라이브러리λ₯Ό μ„€μΉ˜ν–ˆλ‹€.

npm install lodash @types/lodash

 

 

declaration-files.ts

import _ from 'lodash';

let max = _.max([3, 2, 6, 4, 7, 9, 1]);
console.log(max);

let shuffledArray = _.shuffle([212, 2, 1, 6, 4, 3]);
console.log(shuffledArray);

 

 

 * μ΄λŒ€λ‘œ μ»΄νŒŒμΌν•˜κ³  μ‹€ν–‰ν•˜λ©΄ μ—λŸ¬κ°€ λ‚  μˆ˜λ„ μžˆλ‹€.

그럴 λ•ŒλŠ” tsconfig.jsonμ—μ„œ esModuleInterop 이 true둜 λ˜μ–΄μžˆλŠ”μ§€ ν™•μΈν•΄λ΄μ•Όν•œλ‹€. (falseλ©΄ true둜 λ³€κ²½ν•˜κΈ°!) 

 

{
  "compilerOptions": {
    "target": "es6", // 좜λ ₯ JavaScript의 문법 버전 (예: async/await κ°€λŠ₯)
    "module": "commonjs", // Node.js ν™˜κ²½μ—μ„œ μ‚¬μš©ν•˜λŠ” λͺ¨λ“ˆ μ‹œμŠ€ν…œ
    "esModuleInterop": true, // CommonJS λͺ¨λ“ˆμ„ ES6 μŠ€νƒ€μΌ(import ...)둜 μ‚¬μš©ν•  수 있게 함
    "forceConsistentCasingInFileNames": true, // λŒ€μ†Œλ¬Έμž 일관성 μ—†μœΌλ©΄ 였λ₯˜ (ex: import와 μ‹€μ œ 파일λͺ…이 λ‹€λ₯Ό λ•Œ)
    "strict": true, // μ—„κ²©ν•œ νƒ€μž… 검사 전체λ₯Ό μΌ¬ (μ•„λž˜ λͺ¨λ“  strict 계열 μ˜΅μ…˜ 포함)
    "skipLibCheck": true, // node_modules μ•ˆμ˜ .d.ts 파일 νƒ€μž… κ²€μ‚¬λŠ” μƒλž΅ (λΉŒλ“œ 속도 ν–₯상)
}

 

 

 

 

μ—¬κΈ°μ„œ μ§μ ‘μ μœΌλ‘œ νƒ€μž…μ„ μ •μ˜ν•΄μ€„ 수 μžˆλ‹€.

 

types.d.ts

declare module 'lodash' {
  function max(...args: any[]): number;
  function shuffle(...args: any[]): any[];
}

 

νƒ€μž… μ •μ˜λ₯Ό 해쀬을 λ•Œ

 

ν•˜μ§€λ§Œ 이 방법은 μ‚¬μš©ν•˜λŠ” λ©”μ„œλ“œκ°€ λ§Žμ•„μ§ˆμˆ˜λ‘ 같이 μΆ”κ°€ν•΄μ•Όν•΄μ„œ 번거둜운 μž‘μ—…μ΄ 될 수 있고, 직접 μ •μ˜ν•˜λŠ” 것이라 μ •ν™•ν•˜μ§€ μ•Šμ„ 수 μžˆλ‹€.

λ‘λ²ˆμ§Έ 방법은 νƒ€μž… μ •μ˜λ₯Ό λ”°λ‘œ μ„€μΉ˜ν•˜λ©΄ λ˜λŠ”λ°, μœ„μ—μ„œ ν•¨κ»˜ λ‹€μš΄λ°›μ•˜λ˜ @types/loadashλŠ” lodashμ—μ„œ μ œκ³΅ν•΄μ£ΌλŠ” νƒ€μž… μ„ μ–Έ 파일이라 μ–˜λ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€.

 

이제 types.d.tsκ°€ 없어도 μ•„λž˜μ™€ 같이 λͺ…ν™•ν•œ νƒ€μž…μ •μ˜λ₯Ό 확인할 수 μžˆλ‹€.

 

 

 

'typescript' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

TypeScript / Webpack  (0) 2025.06.10
TypeScript / μ œλ„€λ¦­  (2) 2025.06.05
TypeScript / 클래슀  (0) 2025.06.05
TypeScript / νƒ€μž… μΆ”λ‘ , νƒ€μž… 단언  (0) 2025.06.05
TypeScript / νƒ€μž…(2)  (0) 2025.06.04