๐Ÿ“šย ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ปดํŒŒ์ผ๋Ÿฌ

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(*.js)๋กœ ์ปดํŒŒ์ผ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. tsc ๋ช…๋ น์–ด๋กœ ์‹คํ–‰๋˜๊ณ  ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ํŒจํ‚ค์ง€์— ํฌํ•จ๋œ CLI ๋„๊ตฌ์ด๋‹ค.

    "node_modules/typescript": {
      "version": "4.9.4",
      "resolved": "<https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz>",
      "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==",
      "license": "Apache-2.0",
      "bin": {
        "tsc": "bin/tsc", // ์ด ๋ถ€๋ถ„
        "tsserver": "bin/tsserver"
      },
      "engines": {
        "node": ">=4.2.0"
      }
    },

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2025-04-17 แ„‹แ…ฉแ„’แ…ฎ 8.48.34.png

https://velog.io/@sehyunny/how-ts-compiler-compiles

https://velog.io/@sehyunny/how-ts-compiler-compiles

๋™์ž‘์›๋ฆฌ

AST๋Š” ํ”„๋กœ๊ทธ๋žจ ๋ถ„์„, ํ”„๋กœ๊ทธ๋žจ ๋ณ€ํ™˜ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค

์‹ฌ๋ณผ(Symbol): ์ฝ”๋“œ ๋‚ด์˜ ์„ ์–ธ์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ํƒ€์ž… ๊ฒ€์‚ฌ ์‹œ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•จ.

AST(Abstract Syntax Tree): ํ† ํฐ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณ€ํ™˜๋œ ์ฝ”๋“œ์˜ ๊ตฌ์กฐ๋ฅผ ํŠธ๋ฆฌ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ์œผ๋กœ, ์ดํ›„ ๋‹จ๊ณ„์—์„œ์˜ ๋ถ„์„๊ณผ ๋ณ€ํ™˜์— ์ฐธ์กฐ๋จ.

์ฒด์ปค(Checker): AST์™€ ์‹ฌ๋ณผ ์ •๋ณด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ฝ”๋“œ์˜ ํƒ€์ž…์„ ๊ฒ€์‚ฌํ•จ.

์—๋ฏธํ„ฐ(Emitter): ์ตœ์ข…์ ์œผ๋กœ JavaScript ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋‹จ๊ณ„.