tsc app.ts๊ฐ์ด tsc ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํด์ ์ปดํ์ผ์ ํ๊ฒ ๋๋ฉด ํฐ ํ๋ก์ ํธ์์ ์์ฐ์ฑ์ ๋จ์ด์ง ๊ฒ์
๋๋ค. ํฐ ํ๋ก์ ํธ์์๋ ์ด๋ป๊ฒ ์ปดํ์ผ ํ๋์ง ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
- ๊ธฐ์กด์๋
tsc app.ts์ปค๋งจ๋๋ฅผ ์ฌ์ฉํด์ ์๋์ ์ผ๋ก ์ปดํ์ผ ํ์ต๋๋ค. tsc app.ts --watch๋tsc app.ts -w์ปค๋งจ๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋์ ๋ณ๊ฒฝ์ด ์์๋ ์๋์ผ๋ก ์ปดํ์ผ ํด์ค๋๋ค.- ์ฝ๋์ ์ค๋ฅ๊ฐ ์์ผ๋ฉด ์๋์ ์ผ๋ก ์ค๋ฅ๋ฅผ ์๋ ค์ฃผ๊ธฐ๋ ํฉ๋๋ค.
ํ์ง๋ง ํ๋์ ํ์ผ๋ง ๋ณ๊ฒฝํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ ํ ํฐ ํ๋ก์ ํธ์์ ์ฌ๋ ค ํ์ผ์ ์์ ํ ๋ ์ฌ์ฉํ๊ธฐ๋ ๋ถํธํฉ๋๋ค.
tsc --init: tsconfig.json ํ์ผ์ด ์์ฑ๋ฉ๋๋ค.tsc -w: ์๋์ผ๋ก ํด๋ ๋ด์ ๋ชจ๋ ํ์ผ์ ์ปดํ์ผ ํฉ๋๋ค.
tsconfig ํ์ผ์ TypeScript๊ฐ ์ด๋ป๊ฒ ํ๋ก์ ํธ ํด๋๋ฅผ ์ปดํ์ผํ๊ณ ๊ด๋ฆฌํด์ผํ๋์ง ์ ์ํ๋ ํ์ผ์ ๋๋ค.
-
exclude
"exclude": ["analytics.ts"]์ปดํ์ผ ํ ๋ ํน์ ํ์ผ์ ์ ์ธํ๋ ์ต์ ์ ๋๋ค.
-
include
"include": ["app.ts"]include ํค์๋๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋น ๋ฆฌ์คํธ๋ง ์ปดํ์ผ ํ๊ณ ์ง์ ํ์ง ์์ ํ์ผ์ ์ปดํ์ผ ํ์ง ์์ต๋๋ค.
tsconfig.json ํ์ผ์ ๋ณด๋ฉด ์ปดํ์ผ๋ฌ ์ต์ ์ด ์์ต๋๋ค. ํ๋์ฉ ์์๋ด ์๋ค.
-
target
์ด๋ค JavaScript ๋ฒ์ ์ผ๋ก ์ปดํ์ผํ ๊ฒ์ธ์ง ์ ์ํ๋ ์ต์ ์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก es5๊ฐ ์ง์ ๋์ด ์์ต๋๋ค.
-
es5 app.js
"use strict"; var age; age = 30; var userName = 'MJ'; console.log(userName);
-
es6 app.js
"use strict"; let age; age = 30; const userName = 'MJ'; console.log(userName);
-
-
lib
lib๋ ์ปดํ์ผ์ ํฌํจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชฉ๋ก์ ๋๋ค.
-
lib
"lib": [ "DOM", "es6", "DOM.Iterable", "ScriptHost" ]
๊ธฐ๋ณธ์ ์ผ๋ก target์ ์ค์ ํ๋ฉด ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
-
-
sourceMap
sourceMap์ ๋๋ฒ๊น ๋ฐ ๊ฐ๋ฐ์ ์ฌ์ฉํฉ๋๋ค. ์ด ์ค์ ์ ์ ์ฉํ๋ฉด ๋ธ๋ผ์ฐ์ ์ Sources ํญ์์ TypeScript ํ์ผ๋ ๊ฐ์ด ํ์ธํ ์ ์์ต๋๋ค.
-
outDir, rootDir
๊ฐ๊ฐ ์์๋๋ก ํ์ผ์ด ์ ์ฅ๋๋ ์์น์ ์ปดํ์ผํ ํ์ผ์ ์์น๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
-
noEmitOnError
๊ธฐ๋ณธ์ ์ผ๋ก TypeScript ํ์ผ์ ์๋ฌ๊ฐ ์์ด๋ JavaScript ํ์ผ๋ก ์ปดํ์ผ ํฉ๋๋ค. ์๋ฌ๊ฐ ์์๋ ์ปดํ์ผ ํ์ง ์๊ธฐ ์ํด์ noEmitOnError ์ต์ ์ true๋ก ์ค์ ํด์ฃผ๋ฉด TypeSciprtํ์ผ์ ์๋ฌ๊ฐ ์์๋๋ ์๋ฌ์ฒดํฌ๋ง ํ๊ณ JavaScriptํ์ผ์ ๋ง๋ค์ง ์์ต๋๋ค.
-
strict
-
noImplicitAny
ํจ์์ ์ธ์ ํ์ ์ ์๊ฒฉํ๊ฒ ์ ํํ๋ ์ต์
-
strictNullChecks
null์ด๋ undefined๊ฐ ๋ ์ ์๋ ๊ฐ์๋ ๋๋ํ๋ ๊ทธ ๋ณ์๋ฅผ ์ฒดํฌํด์ค์ผ ํฉ๋๋ค.
-
๋๋ํ ์ฌ์ฉ
const button = document.querySelector('button')!; button.addEventListener('click', () => { console.log('Clicked!'); });
-
if ์ฒดํฌ
const button = document.querySelector('button')!; if (button) { button.addEventListener('click', () => { console.log('Clicked!'); }); }
-
-
-
์ฝ๋ ํ์ง ์ต์
-
noUnusedLocals
์ฌ์ฉํ์ง ์์ ๋ก์ปฌ ๋ณ์๊ฐ ์์ผ๋ฉด ์๋ ค์ค๋๋ค.
-
noUnusedParameters
ํจ์์์ ์ฌ์ฉํ์ง ์๋ ํ๋ผ๋ฏธํฐ๋ฅผ ์๋ ค์ค๋๋ค.
-
- ESLint pakage๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- Prettier
- Debugger for Chrome
์ด ํจํค์ง๋ฅผ ์ฌ์ฉํ๋ฉด Chrome์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ๋ฉด์ ๋๋ฒ๊ฑฐ๋ฅผ ์๋ํ ์ ์์ต๋๋ค. ์ฆ, ์ค์ runtime ํ๊ฒฝ์ ๊ฐ์ ํ๊ณ ๋๋ฒ๊น ํ ์ ์๊ฒ ๋ฉ๋๋ค.
๊ธฐ์กด ํ์ผ์ ๋๋ ํํด์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด ์ฑ๋ฅ์ ํฅ์ ์ํต๋๋ค. ์ด ๋๋ ํ ๋ ํ์ผ์ ๋๋ฒ๊น ์ด ์ด๋ ต๊ธฐ ๋๋ฌธ์ ์ต์ ์ true๋ก ์ค์ ํ๊ฒ ๋๋ฉด sourceMap์ ์์ฑํ๊ฒ ๋๊ณ ๋๋ ํํ ํ์ผ๊ณผ ๋น๊ตํด๊ฐ๋ฉฐ ๋๋ฒ๊น ํ ์ ์์ต๋๋ค.