Declaration File
- TypeScript ์ ์ธ ํ์ผ์ ์ฃผ๋ก JavaScript๋ก ์์ฑ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ชจ๋์ TypeScript์์ ์ฌ์ฉํ ๋ ํ์ํฉ๋๋ค.
- ์ ์ธ ํ์ผ์ .d.ts ํ์ฅ์๋ฅผ ๊ฐ์ง๋ฉฐ ๋์ผํ ์ด๋ฆ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ชจ๋์ ํ์ ์ ์ ์ํฉ๋๋ค. Visual Studio Code์ ๊ฐ์ ํตํฉ๊ฐ๋ฐํ๊ฒฝ(IDE)์์๋ ์ ์ธ ํ์ผ์ ๋ถ๋ฌ์์ ๋ณด์ฌ์ฃผ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ํ์ ์ ํ์ธํ ์ ์์ต๋๋ค.
- TypeScript๋ JavaScript ์ฝ๋๋ ๊ฐ์ด ์ธ ์ ์๋๋ก ํ์ฉํ์ง๋ง, ํ์ ์ ์๊ฐ ์๋ค๋ฉด ์ฌ์ค TypeScript๋ฅผ ์ฐ๋ ์๋ฏธ๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์ TypeScript์์ ์ ์ธ ํ์ผ์ ๊ผญ ํ์ํฉ๋๋ค.
- tsconfig.json์ "strict": true ๋ฅผ ์ค์ ํ๋ฉด ์ ์ธ ํ์ผ์ด ์๋ JavaScript ํจํค์ง์ ๋ํด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉฐ ์ปดํ์ผ๋ ํ ์ ์์ต๋๋ค. ์ด๋ {ํจํค์ง๋ช }.d.ts ํ์ผ์ ์์ฑํด์ฃผ๋ฉด ์ค๋ฅ๊ฐ ํด๊ฒฐ๋ฉ๋๋ค.
// index.ts
import { exit, init } from "myPackage";
init({ url: "x" });
exit(1);
// myPackage.js
export function init(config) {
return true;
}
export function exit(code) {
return code + 1;
}
// myPackage.d.ts
interface Config {
url: string;
}
declare module "myPackage" {
function init(config: Config): boolean;
function exit(code: number): number;
}
JSDoc
- ์ฌ์ค ์คํ ์์ค์ ๊ธฐ์ฌํ๋ ๊ฒ์ด ์๋ ์ด์ ์ง์ ์ ์ธ ํ์ผ์ ์์ฑํ ์ผ์ ๋ง์ง ์์ ๊ฒ์ ๋๋ค...
- TypeScript๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒฝ์ฐ์ ๊ฐ์ด, ํ๋์ ํ๋ก์ ํธ ์์์ JavaScript ํ์ผ๊ณผ TypeScript ํ์ผ์ด ํจ๊ป ์ฐ์ด๋ ๊ฒฝ์ฐ๋ฅผ ๋ง์ฃผ์น๊ฒ ๋ฉ๋๋ค.
- ํ์ ์ ์ธ ํ์ผ์ ์์ฑํ์ง ์๊ณ , TypeScript์ JavaScript๋ฅผ ํจ๊ป ์ธ ์ ์์๊น์?
1. tsconfig.json ํ์ผ์ "allowJs": true ์ต์ ์ถ๊ฐ
{
"include": ["src"],
"compilerOptions": {
"outDir": "build",
"target": "ES6",
"strict": true,
"allowJs": true
}
}
2. JSDoc ์์ฑ
- JavaScript ํ์ผ์ ๊ทธ๋๋ก ์ ์งํ๋ฉด์ TypeScript๊ฐ ์ ๊ณตํ๋ ๋ณดํธ ์ฅ์น๋ฅผ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด JSDoc์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
- ์์ํ JavaScript ์ฝ๋ ์์์
@ts-check
๋ฅผ ์ฃผ์์ผ๋ก ์ถ๊ฐํ๋ฉด TypeScript์ฒ๋ผ ํ์ ๋ฐ ์๋ฌ ์ฒดํฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค. - ๊ทธ ๋ค์ JSDoc ํ์์ ์ฃผ์์ ์์ฑํ๋ฉด ๋ฉ๋๋ค.
- ์์ํ JavaScript ์ฝ๋ ์์์
- ์ด๋ ๊ฒ ํ ๊ฒฝ์ฐ ์ค์ ์๋น์ค ์ค์ธ ํ๋ก์ ํธ๋ผ๋ฉด ๋น์ฅ ์ค๋ฅ๊ฐ ๋ ๊ฑฑ์ ์ ํ์ง ์์๋ ๋ ๊ฒ์ ๋๋ค.
// @ts-check
/**
* Initialize the project
* @param {object} config
* @param {string} config.url
* @returns {boolean}
*/
export function init(config) {
return true;
}
/**
* Exits then program
* @param {number} code
* @returns {number}
*/
export function exit(code) {
return code + 1;
}
์ฐธ๊ณ
- ๊ฐ์ - [๋ ธ๋ง๋์ฝ๋] ํ์ ์คํฌ๋ฆฝํธ๋ก ๋ธ๋ก์ฒด์ธ ๋ง๋ค๊ธฐ
- https://www.codeit.kr/tutorials/90/%ED%83%80%EC%9E%85%20%EC%A0%95%EC%9D%98(d.ts)%20%ED%8C%8C%EC%9D%BC%EC%9D%B4%20%EB%AD%94%EA%B0%80%EC%9A%94%3F
- https://poiemaweb.com/jsdoc-type-hint
- https://www.typescriptlang.org/docs/handbook/intro-to-js-ts.html
'Language > TypeScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TypeScript] ์ค์ฒฉ๋ ๊ฐ์ฒด์ ๊ฐ์ ํ์ ์ผ๋ก ๋ง๋ค๊ณ ์ถ์ ๋ (0) | 2024.12.31 |
---|---|
[TypeScript] Class vs Interface vs Type ์ฐจ์ด์ ์ ๋ฆฌ (0) | 2024.08.07 |
[TypeScript] TypeScript ํ์ ์ ๋ฆฌ (0) | 2024.08.07 |
[TypeScript] TypeScript ์๋์ผ๋ก ์ค์ ํ๊ธฐ (0) | 2024.08.07 |
[TypeScript] TypeScript ์ฅ์ ๊ณผ ํน์ง (0) | 2024.08.05 |