Skip to content

Latest commit

ย 

History

History
153 lines (92 loc) ยท 4.56 KB

File metadata and controls

153 lines (92 loc) ยท 4.56 KB

TypeScript ์ปดํŒŒ์ผ๋Ÿฌ

tsc app.ts๊ฐ™์ด tsc ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ปดํŒŒ์ผ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ํฐ ํ”„๋กœ์ ํŠธ์—์„œ ์ƒ์‚ฐ์„ฑ์€ ๋–จ์–ด์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํฐ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ์ปดํŒŒ์ผ ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

1. Watch command ์‚ฌ์šฉํ•˜๊ธฐ

  • ๊ธฐ์กด์—๋Š” tsc app.ts ์ปค๋งจ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ˆ˜๋™์ ์œผ๋กœ ์ปดํŒŒ์ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • tsc app.ts --watch๋‚˜ tsc app.ts -w ์ปค๋งจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ์— ๋ณ€๊ฒฝ์ด ์žˆ์„๋•Œ ์ž๋™์œผ๋กœ ์ปดํŒŒ์ผ ํ•ด์ค๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์œผ๋ฉด ์ž๋™์ ์œผ๋กœ ์˜ค๋ฅ˜๋ฅผ ์•Œ๋ ค์ฃผ๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋งŒ ๋ณ€๊ฒฝํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ ํฐ ํ”„๋กœ์ ํŠธ์—์„œ ์—ฌ๋ ค ํŒŒ์ผ์„ ์ˆ˜์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ๋Š” ๋ถˆํŽธํ•ฉ๋‹ˆ๋‹ค.

์ „์ฒด ํŒŒ์ผ ์ž๋™์œผ๋กœ ์ปดํŒŒ์ผ ํ•˜๊ธฐ

  1. tsc --init : tsconfig.json ํŒŒ์ผ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  2. tsc -w: ์ž๋™์œผ๋กœ ํด๋Œ€ ๋‚ด์˜ ๋ชจ๋“  ํŒŒ์ผ์„ ์ปดํŒŒ์ผ ํ•ฉ๋‹ˆ๋‹ค.

2. tsconfig ํŒŒ์ผ

tsconfig ํŒŒ์ผ์€ TypeScript๊ฐ€ ์–ด๋–ป๊ฒŒ ํ”„๋กœ์ ํŠธ ํด๋”๋ฅผ ์ปดํŒŒ์ผํ•˜๊ณ  ๊ด€๋ฆฌํ•ด์•ผํ•˜๋Š”์ง€ ์ •์˜ํ•˜๋Š” ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

์˜ต์…˜

  1. exclude

    "exclude": ["analytics.ts"]

    ์ปดํŒŒ์ผ ํ•  ๋•Œ ํŠน์ • ํŒŒ์ผ์„ ์ œ์™ธํ•˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค.

  2. include

    "include": ["app.ts"]

    include ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ๋ฆฌ์ŠคํŠธ๋งŒ ์ปดํŒŒ์ผ ํ•˜๊ณ  ์ง€์ •ํ•˜์ง€ ์•Š์€ ํŒŒ์ผ์€ ์ปดํŒŒ์ผ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

compilerOptions

tsconfig.json ํŒŒ์ผ์„ ๋ณด๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์”ฉ ์•Œ์•„๋ด…์‹œ๋‹ค.

  1. 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);
  2. lib

    lib๋Š” ์ปดํŒŒ์ผ์— ํฌํ•จ๋  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค.

    • lib

          "lib": [
            "DOM",
            "es6",
            "DOM.Iterable",
            "ScriptHost"
          ] 

    ๊ธฐ๋ณธ์ ์œผ๋กœ target์„ ์„ค์ •ํ•˜๋ฉด ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  3. sourceMap

    sourceMap์€ ๋””๋ฒ„๊น… ๋ฐ ๊ฐœ๋ฐœ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์„ค์ •์„ ์ ์šฉํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €์˜ Sources ํƒญ์—์„œ TypeScript ํŒŒ์ผ๋„ ๊ฐ™์ด ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  4. outDir, rootDir

    ๊ฐ๊ฐ ์ˆœ์„œ๋Œ€๋กœ ํŒŒ์ผ์ด ์ €์žฅ๋˜๋Š” ์œ„์น˜์™€ ์ปดํŒŒ์ผํ•  ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  5. noEmitOnError

    ๊ธฐ๋ณธ์ ์œผ๋กœ TypeScript ํŒŒ์ผ์— ์—๋Ÿฌ๊ฐ€ ์žˆ์–ด๋„ JavaScript ํŒŒ์ผ๋กœ ์ปดํŒŒ์ผ ํ•ฉ๋‹ˆ๋‹ค. ์—๋Ÿฌ๊ฐ€ ์žˆ์„๋•Œ ์ปดํŒŒ์ผ ํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด์„œ noEmitOnError ์˜ต์…˜์„ true๋กœ ์„ค์ •ํ•ด์ฃผ๋ฉด TypeSciprtํŒŒ์ผ์— ์—๋Ÿฌ๊ฐ€ ์žˆ์„๋•Œ๋Š” ์—๋Ÿฌ์ฒดํฌ๋งŒ ํ•˜๊ณ  JavaScriptํŒŒ์ผ์„ ๋งŒ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  6. 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!');
          });
        }
  7. ์ฝ”๋“œ ํ’ˆ์งˆ ์˜ต์…˜

    • noUnusedLocals

      ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ๋กœ์ปฌ ๋ณ€์ˆ˜๊ฐ€ ์žˆ์œผ๋ฉด ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

    • noUnusedParameters

      ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

3. Visual Code๋ฅผ ์‚ฌ์šฉํ•œ Debug

  1. ESLint pakage๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  2. Prettier
  3. Debugger for Chrome

Debugger for Chrome

์ด ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Chrome์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋””๋ฒ„๊ฑฐ๋ฅผ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์‹ค์ œ runtime ํ™˜๊ฒฝ์„ ๊ฐ€์ •ํ•˜๊ณ  ๋””๋ฒ„๊น… ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ธฐ์กด ํŒŒ์ผ์„ ๋‚œ๋…ํ™”ํ•ด์„œ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ ์‹œํ‚ต๋‹ˆ๋‹ค. ์ด ๋‚œ๋…ํ™” ๋œ ํŒŒ์ผ์€ ๋””๋ฒ„๊น…์ด ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— ์˜ต์…˜์„ true๋กœ ์„ค์ •ํ•˜๊ฒŒ ๋˜๋ฉด sourceMap์„ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๊ณ  ๋‚œ๋…ํ™”ํ•œ ํŒŒ์ผ๊ณผ ๋น„๊ตํ•ด๊ฐ€๋ฉฐ ๋””๋ฒ„๊น… ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณต์‹ DOCS

https://typescript-kr.github.io/pages/compiler-options.html