ํ์ ์คํฌ๋ฆฝํธ ์ปดํ์ผ๋ฌ๋ IDE์ ์ด๋ฏธ ๋ด์ฅ๋์๊ฑฐ๋ ๋ณ๋ IDEํ๋ฌ๊ทธ์ธ์ ์ค์นํด ์ฌ์ฉํ ์ ์๋ค.
์ฑ ์์๋ Node.js ๋ฐํ์์ ์ฌ์ฉ. ( Node์ NPM์ ์ค์น ํ ๋ฒ์ ํ์ธํ๊ธฐ. )
ํ์ ์คํฌ๋ฆฝํธ ์ ์ญ ์ค์น
npm install -g typescript
tsc -v
// 1_1.ts
function getFinalPrice(price: number, discount: number){ // ํจ์ ์ธ์์ ํ์
์ ์.
return price - price/discount;
}
console.log(getFinalPrice(100, 10)); // ์ฌ๋ฐ๋ฅธ ํธ์ถ
console.log(getFinalPrice(100, '10%')); // ์๋ชป๋ ํธ์ถ
tsc 1_1
์ปดํ์ผ์ค๋ฅ๋ ๋จ์ง๋ง jsํ์ผ์ ์์ฑ์ด ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๊ด์ ์์๋ 1_1.js๋ ์ ํจํ๋ค. ๊ทธ๋ฌ๋ ์ค์ ํ์ ์คํฌ๋ฆฝํธ ํ๋ก์ ํธ์์๋ ์ค๋ฅ๊ฐ ์๋ ํ์ผ์ ์์ฑํ ์ ์๋ค.
ํ์ ์คํฌ๋ฆฝํธ ์ปดํ์ผ๋ฌ์๋ 20๊ฐ๊ฐ ๋๋ ์ต์ ์ด ์๋๋ฐ ๊ทธ์ค noEmitOnError๋ฅผ ์์๋ณด์.
์์ฑ๋ jsํ์ผ์ ์ญ์ ํ๊ณ noEmitOnError๋ฅผ ์ถ๊ฐํด ๋ช ๋ น์ด๋ฅผ ์คํ.
tsc 1_1 --noEmitOnError true
์ค๋ฅ๋ฅผ ๊ณ ์น์ง ์๋์ด์ jsํ์ผ์ด ์์ฑ๋์ง ์๋ ๊ฑธ ๋ณผ ์ ์๋ค.
โ noEmitOnError์ฌ์ฉ์ ํ์ ์คํฌ๋ฆฝํธ ์ปดํ์ผ๋ฌ๋ ๋ชจ๋ ์ค๋ฅ๊ฐ ๊ณ ์ณ์ง ๋๊น์ง ์ด์ ์ ์์ฑ๋ jsํ์ผ์ ๋ฎ์ด์ฐ์ง ์์ต๋๋ค.
ํน์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ์ ์ ๊ฐ๋ฆฌํด.
ES5, ES6์ด์์ ๋ฌธ๋ฒ์ผ๋ก ๋ณํํ๊ณ ์ถ์ ๋ ์ฌ์ฉ ๊ฐ๋ฅ.
tsc --t ES5 1_1
์์ฑ๋ JSํ์ผ
function getFinalPrice(price, discount) {
return price - price / discount;
}
console.log(getFinalPrice(100, 10)); // ์ฌ๋ฐ๋ฅธ ํธ์ถ
// console.log(getFinalPrice(100, '10%')); // ์๋ชป๋ ํธ์ถ
ํ์ ์คํฌ๋ฆฝํธ ์ปดํ์ผ๋ฌ๋ ํด๋น ์์ค, ์ต์ข ๋๋ ํฐ๋ฆฌ, ํ๊ฒ ๋ฑ ์ต์ ์ ๋ฏธ๋ฆฌ ์ค์ ํ ์ ์์ต๋๋ค.
ํ๋ก์ ํธ ํด๋์ tsconfig.jsonํ์ผ์ด ์๋ ์ํ์์ tsc๋ช ๋ น์ด ์ ๋ ฅํ๋ฉด tsconfig.json๋ด์ ๋ชจ๋ ์ต์ ์ ์ฝ์ต๋๋ค.
{
"compilerOptions":{
"baseUrl":"src", // srcํด๋ ๋ด ๋ชจ๋ .tsํ์ผ์ ์ปดํ์ผ
"outDir":"./dist", // dist ํด๋์ ์์ฑ๋ .jsํ์ผ์ ์ ์ฅ
"noEmitOnError":true, // ์ปดํ์ผ ์ค๋ฅ ๋ฐ์ ์, jsํ์ผ ์์ฑ X
"target":"es5" // es5๋ก ์ปดํ์ผ
};
}
โ ์ปดํ์ผ๋ฌ์ ์ต์ ๋์์ ๊ตฌ๋ฌธ ๊ฒ์ฌ์๋ ์ฌ์ฉ๋๋ค
{
"compilerOptions":{
"noEmitOnError":true, // ์ปดํ์ผ ์ค๋ฅ ๋ฐ์ ์, jsํ์ผ ์์ฑ X
"target":"es5", // es5๋ก ์ปดํ์ผ
"watch":true // ์ปดํ์ผ๋ฌ๊ฐ ํ์
์คํฌ๋ฆฝํธ ํ์ผ์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ๋ค์ ์ปดํ์ผํจ.
}
}
์ ํ์ผ์ 1_1๊ณผ ๊ฐ์ ๊ฒฝ๋ก์ ๋๊ณ , ์๋ ํฐ๋ฏธ๋ ๋ช ๋ น์ ์คํ
tsc
watch๋ชจ๋๋ก ์ธํด ์ปดํ์ผ๋ฌ๋ ์ข ๋ฃ๋์ง ์์์ ๋ณผ ์ ์๋ค.
main.jsํ์ผ์ ์์ฑ๋์ง ์์ต๋๋ค.
์ค๋ฅ๋ฅผ ์์ ํ๋ฉด main.js๋ ์์ ๋จ. (๊ฐ์ฑ๊ธฐ)
โ ํ์
์คํฌ๋ฆฝํธ ํ๋ก์ ํธ๋ฅผ ์ฒ์ ์์ํ ๋ ํด๋น ํด๋์์ tsc --init ๋ช
๋ น์ด๋ก ํ๋ก์ ํธ๋ฅผ ์ด๊ธฐํํจ.
์์ฑ๋ tsconfig.json์ ๋ชจ๋ ์ปดํ์ผ๋ฌ ์ต์
์ด ์์ผ๋ฉฐ ๋๋ถ๋ถ ์ฝ๋๊ฐ ์ฃผ์์ฒ๋ฆฌ ๋์์. ํ์์ ๋ฐ๋ผ ์ฃผ์ ์ฒ๋ฆฌ๋ฅผ ์ ๊ฑฐ.
bit.ly/384AgfN