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 ํ์์ ์ฃผ์์ ์์ฑํ๋ฉด ๋ฉ๋๋ค.
- ์ด๋ ๊ฒ ํ ๊ฒฝ์ฐ ์ค์ ์๋น์ค ์ค์ธ ํ๋ก์ ํธ๋ผ๋ฉด ๋น์ฅ ์ค๋ฅ๊ฐ ๋ ๊ฑฑ์ ์ ํ์ง ์์๋ ๋ ๊ฒ์
๋๋ค.
// @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;
}
์ฐธ๊ณ