@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
'TS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TS] : any unknown union (0) | 2023.08.21 |
---|---|
[TS] : tuple enum (0) | 2023.08.18 |
[TS] : tsconfig.json (0) | 2023.08.17 |
[TS] : TS์ ์ปดํ์ผ๋ฌ TSC (0) | 2023.08.17 |
[TS] : Type Script ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ถ (์์ ํ๋ฉด์ ๋ด์ฉ ์ถ๊ฐ) (0) | 2023.08.14 |