[TS] 1. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ก 

2025. 11. 4. 21:08ยท๐Ÿ’› Frontend/๐Ÿ’› Frontend : TypeScript
728x90

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ํƒ„์ƒ

2012๋…„ ๋ด๋งˆํฌ ์ถœ์‹  MS ๊ฐœ๋ฐœ์ž ์•ค๋”์Šค ํ•˜์ผ์Šค๋ฒ„๊ทธ๊ฐ€ ๋งŒ๋“ฆ

C#์„ ๋งŒ๋“  ์‚ฌ๋žŒ์ด๋ผ TS์™€ C#์ด ์œ ์‚ฌํ•œ ์ ์ด ๊ฝค ์žˆ๋‹ค.

 

 

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ™•์žฅํŒ

์˜ค๋ฅธ์ชฝ TS์—๋Š” ๋ณ€์ˆ˜์˜ ์ด๋ฆ„ ๋’ค ์ฝœ๋ก ๊ณผ ํ•จ๊ป˜ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์ •์˜ → ๋ณ€์ˆ˜์˜ ํƒ€์ž… ๊ณ ์ •

 

 

 

TS์˜ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ

 

๊ทธ๋Ÿฐ๋ฐ NodeJS ์˜ ๋“ฑ์žฅ์œผ๋กœ ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ๋งŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์–ด๋””์„œ๋“  ์‹คํ–‰๊ฐ€๋Šฅํ•˜๊ฒŒ ๋จ

 

 

 

→ ๋ณต์žกํ•œ ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ JS๋กœ ๊ฐœ๋ฐœํ•˜๋‹ค๋ณด๋‹ˆ, ์œ ์—ฐ์„ฑ → ๋ฒ„๊ทธ ๋ฐœ์ƒ ์ฆ๊ฐ€, ํ”„๋กœ๊ทธ๋žจ ์•ˆ์ •์„ฑ ๋–จ์–ด์ง

 

๊ทธ๋ž˜์„œ js์˜ ๊ธฐ์กด ๋ฌธ๋ฒ•์€ ์œ ์ง€ํ•œ ์ฑ„ ์•ˆ์ •์„ฑ๋งŒ ์ถ”๊ฐ€ ํ™•๋ณด

 

 

 

JS์˜ ๋‹จ์ ๊ณผ TS์˜ ์žฅ์ 

ํƒ€์ž…์‹œ์Šคํ…œ

ํ”„๋กœ๊ทธ๋žจ ์•ˆ์˜ ๊ฐ’๊ณผ ํ‘œํ˜„์‹์ด ์–ด๋–ค ์ข…๋ฅ˜์˜ ํ…Œ์ดํ„ฐ(ํƒ€์ž…)์ธ์ง€ ๊ตฌ๋ถ„ํ•˜๊ณ , ๊ทธ ํƒ€์ž…์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‚ฌ์šฉ๋˜๋Š”์ง€ ๊ฒ€์‚ฌํ•˜๋Š” ๊ทœ์น™์˜ ๋ชจ์Œ

 

ํƒ€์ž… ์‹œ์Šคํ…œ์˜ ์ข…๋ฅ˜

  • ์ •์  ํƒ€์ž… ์‹œ์Šคํ…œ
  • ๋™์  ํƒ€์ž… ์‹œ์Šคํ…œ

 

๋™์  ํƒ€์ž… ์‹œ์Šคํ…œ

๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋„์ค‘์— ๊ฒฐ์ •

 

์žฅ์ 

  • ์ฝ”๋“œ ์ž‘์„ฑ์ด ๋น ๋ฅด๊ณ  ์œ ์—ฐ
  • ์ดˆ๊ธฐ ๊ฐœ๋ฐœ ์ง„์ž… ์žฅ๋ฒฝ์ด ๋‚ฎ์Œ
  • ์ƒํ™ฉ์— ๋”ฐ๋ผ ํƒ€์ž… ์ž์œ ๋กญ๊ฒŒ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
  • ๋ฆฌํŒฉํ† ๋ง์ด๋‚˜ ์Šคํฌ๋ฆฝํŒ…์— ๊ฐ•ํ•จ
    • ์ฝ”๋“œ๊ฐ€ ๊ณ ์ •๋œ ํƒ€์ž…์— ๋ฌถ์ด์ง€ ์•Š์•„์„œ
    • ๋น ๋ฅธ ์‹คํ—˜, ์ˆ˜์ •, ๋””๋ฒ„๊น…์ด ๊ฐ€๋Šฅ
    • ๊ทธ๋ž˜์„œ ๋ฐ์ดํ„ฐ ๋ถ„์„, ์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ, ์›น ํฌ๋กค๋Ÿฌ ๊ฐ™์€
    • ๋น ๋ฅธ ๊ฐœ๋ฐœ ์ฃผ๊ธฐ๊ฐ€ ํ•„์š”ํ•œ ์ž‘์—…์—์„œ ์ž์ฃผ ์“ฐ์ž„
  • ํ•จ์ˆ˜ํ˜•/๋ฉ”ํƒ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์œ ์—ฐ
    • ์‹คํ–‰ ์ค‘์— ์ƒˆ๋กœ์šด ์†์„ฑ์ด๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ

 

๋‹จ์ 

  • ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๊ฐ€ ๋งŽ์ด ๋‚œ๋‹ค
  • ์‹คํ–‰์€ ๋˜๋Š”๋ฐ ์˜ค๋ฅ˜๊ฐ€ ๋‚จ → ์ฝ”๋“œ ์‹คํ–‰ ์ „์— ์˜ค๋ฅ˜ ๋ฐœ๊ฒฌ ์–ด๋ ค์›€

 

  • ํ”„๋กœ์ ํŠธ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์›Œ์ง„๋‹ค
    • ๋ณ€์ˆ˜ ํƒ€์ž…์ด ์ฝ”๋“œ ์ค‘๊ฐ„์ค‘๊ฐ„ ๋ฐ”๋€” ์ˆ˜ ์žˆ์–ด์„œ ๋ณ€์ˆ˜ ์ถ”์ ์— ์–ด๋ ค์›€
  • ์„ฑ๋Šฅ์ด ๋А๋ฆผ
    • ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ํŒŒ์ด์ฌ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๊ฐ€ ๋ณ€์ˆ˜ ํƒ€์ž…์„ ๊ณ„์† ํ™•์ธ → ์ •์  ํƒ€์ž… ์–ธ์–ด๋ณด๋‹ค ๋А๋ฆผ

 

์ •์  ํƒ€์ž… ์‹œ์Šคํ…œ

 

→ ์—๋””ํ„ฐ ์ƒ์—์„œ ๋ฐ”๋กœ ๋นจ๊ฐ„์ค„๋กœ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์Œ

์ •์  ํƒ€์ž… ์‹œ์Šคํ…œ์˜ ๋‹จ์ 

  • ์ฝ”๋“œ ์ž‘์„ฑ์ด ๋ฒˆ๊ฑฐ๋กญ๊ณ 
  • ์œ ์—ฐ์„ฑ์ด ๋–จ์–ด์ง„๋‹ค
  • ๊ฐœ๋ฐœ ์ดˆ๊ธฐ ์†๋„๊ฐ€ ๋А๋ฆฌ๊ณ 
  • ๋ณต์žกํ•œ ํƒ€์ž… ์„ค๊ณ„ ํ•„์š”

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์™€ ์ ์ง„์  ํƒ€์ดํ•‘

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋™์  ํƒ€์ž… ์‹œ์Šคํ…œ + ์ž๋ฐ”์˜ ์ •์  ํƒ€์ž… ์‹œ์Šคํ…œ ํ˜ผํ•ฉ

 

์ž๋ฐ”์˜ ์ •์  ํƒ€์ž… ์‹œ์Šคํ…œ ์ฒ˜๋Ÿผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋™์  ํƒ€์ž„ ์‹œ์Šคํ…œ ์ฒ˜๋Ÿผ
์‚ฌ์ „์— ์˜ค๋ฅ˜ ๋ณด์—ฌ์คŒ ๋ชจ๋“  ๋ณ€์ˆ˜์— ์ผ์ผ์ด ์ง์ ‘ ํƒ€์ž… ๋ช…์‹œ ์•ˆํ•ด๋„ ๋จ

→ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์ง์ ‘ ์ •์˜ํ•˜์ง€ ์•Š์•„๋„ ๋ณ€์ˆ˜์— ๋‹ด๊ธฐ๋Š” ์ดˆ๊ธฐ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ž๋™์œผ๋กœ ํƒ€์ž… ์ถ”๋ก 

 

⇒ ์ ์ง„์ ์œผ๋กœ ํƒ€์ž…์„ ๊ฒฐ์ •ํ•œ๋‹ค ⇒ ์ ์ง„์  ํƒ€์ž… ์‹œ์Šคํ…œ

 

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ๋™์ž‘์›๋ฆฌ

์ผ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋™์ž‘์›๋ฆฌ

 

์ผ๋ฐ˜์ ์œผ๋กœ๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ์•Œ์•„๋“ค์„ ์ˆ˜ ์žˆ๊ฒŒ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ฝ”๋“œ๋ฅผ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

 

 

์ด ๊ณผ์ •์—์„œ ๋จผ์ € AST ๋ผ๋Š” ์ถ”์ƒ๋ฌธ๋ฒ•ํŠธ๋ฆฌ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

 

 

์ด๋Ÿฐ์‹์œผ๋กœ AST ๋กœ ๋ณ€ํ™˜

 

๊ทธ ํ›„ ์ด AST ํŠธ๋ฆฌ๋ฅผ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ ํ›„์— ์ข…๋ฃŒ๋œ๋‹ค.

 

function add(a, b) {
	return a + b;
}

 

๋ฅผ AST๋กœ ๋งŒ๋“ค๋ฉด

FunctionDeclaration
โ”œโ”€โ”€ Identifier: "add"
โ”œโ”€โ”€ Parameters: [a, b]
โ””โ”€โ”€ BlockStatement
    โ””โ”€โ”€ ReturnStatement
        โ””โ”€โ”€ BinaryExpression (+)
            โ”œโ”€โ”€ Identifier: a
            โ””โ”€โ”€ Identifier: b
// ์–ด๋–ค JavaScript ์—ฐ์‚ฐ์ž๋“  BinaryExpression์œผ๋กœ ํ‘œํ˜„
const expr1 = a + b;        // BinaryExpression (+)
const expr2 = a - b;        // BinaryExpression (-)
const expr3 = a * b;        // BinaryExpression (*)
const expr4 = a ** b;       // BinaryExpression (**)
const expr5 = a % b;        // BinaryExpression (%)
const expr6 = a == b;       // BinaryExpression (==)
const expr7 = a === b;      // BinaryExpression (===)
const expr8 = a instanceof b; // BinaryExpression (instanceof)
const expr9 = a in b;       // BinaryExpression (in)

 

์•„๋ž˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ AST ๊ฐ€ ์™„์„ฑ๋œ๋‹ค.

 

 

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ๋™์ž‘์›๋ฆฌ

  1. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ AST ํŠธ๋ฆฌ๋กœ ๋ณ€ํ™˜
  2. ์›๋ž˜๋Š” ๊ทธ ๋‹ค์Œ AST → ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š”๋ฐ, TS๋Š” ์ด AST๋ฅผ ๋ณด๊ณ  ์ฝ”๋“œ ์ƒ์— ์˜ค๋ฅ˜๊ฐ€ ์—†๋Š”์ง€ ๊ฒ€์‚ฌํ•˜๋Š” ํƒ€์ž… ๊ฒ€์‚ฌ๊ฐ€ ์ˆ˜ํ–‰

 

๋งŒ์•ฝ ํƒ€์ž… ๊ฒ€์‚ฌ ์‹œ ํƒ€์ž… ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ์ปดํŒŒ์ผ์ด ์ค‘๋‹จ

 

์ •์ƒ์ ์ธ ์ฝ”๋“œ๋ผ๋ฉด ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ํ†ต๊ณผํ•˜๊ณ , ๊ทธ ๋‹ค์Œ์— AST → ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ (๋ฐ”์ดํŠธ ์ฝ”๋“œ๊ฐ€ ์•„๋‹˜)

 

 

์ดํ›„ ๋‹ค์‹œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋กœ AST๋ฅผ ๋งŒ๋“  ํ›„ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜

 

ํƒ€์ž… ๊ฒ€์‚ฌ๊ฐ€ ์™„๋ฃŒ๋œ ํ›„ ๋ณ€ํ™˜๋œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—๋Š” ํƒ€์ž… ๊ด€๋ จ ์ฝ”๋“œ๊ฐ€ ๋ชจ๋‘ ์‚ฌ๋ผ์ง

 

 

๊ฒฐ๊ตญ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑํ•œ

 

ํƒ€์ž… ๊ด€๋ จ ์ฝ”๋“œ๋“ค์€ ๊ฒฐ๊ตญ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋ณ€ํ™˜๋  ๋•Œ ์‚ฌ๋ผ์ง€๊ฒŒ ๋˜์–ด ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์— ์˜ํ–ฅ X

 

 

 

 

 

 

์ฐธ๊ณ 

 

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค - ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ก 

ํ•œ ์ž… ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ

ts.winterlood.com

 

728x90
'๐Ÿ’› Frontend/๐Ÿ’› Frontend : TypeScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [TS] 2. ํƒ€์ž… ์กฐ์ž‘ํ•˜๊ธฐ
eyes from es
eyes from es
  • eyes from es
    eyes from es
    eyes from es
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
      • โค๏ธ ๊ฟ€ํŒ ๋ชจ์Œ
        • โค๏ธ ๊ฐ“์ƒ ๊ฟ€ํŒ
        • โค๏ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      • ๐Ÿงก Projects
        • ๐Ÿงก Projects: Web
        • ๐ŸŽคPreterview
        • ๐Ÿงก Projects: App
        • ๐Ÿงก๋Œ€์™ธํ™œ๋™
        • ๐Ÿงก OSCCA ์˜คํ”ˆ์†Œ์Šค ์ปจํŠธ๋ฆฌ๋ทฐ์…˜ ์•„์นด๋ฐ๋ฏธ
      • ๐Ÿ’› Frontend
        • ๐Ÿ’› Frontend : React
        • ๐Ÿ’› Frontend : JavaScript
        • ๐Ÿ’› Frontend : TypeScript
      • ๐Ÿ’š Backend
      • ๐Ÿ’™ OS: ์šด์˜์ฒด์ œ
        • ๐Ÿ’™ Linux
      • ๐Ÿ’œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
        • ๐Ÿ’œ ์ž๋ฃŒ๊ตฌ์กฐ
        • ๐Ÿ’œ ์•Œ๊ณ ๋ฆฌ์ฆ˜
        • ๐Ÿ’œ ๋ฐฑ์ค€
        • ๐Ÿ’œSWEA
        • ๐Ÿ’œํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
      • ๐Ÿ”ด Study
        • ๐Ÿ”ด๋ฉด์ ‘ ์Šคํ„ฐ๋””
        • ๐Ÿ”ด ๊ธฐ์—…๋ถ„์„
        • ๐Ÿ”ด ์—๋Ÿฌ๋…ธํŠธ(Error Note)๐Ÿงฑ
        • ๐Ÿ”ด ITNews(Coding)
        • ๐Ÿ”ด ITNews(Tech)
      • ๐ŸŸ  ์ธ์ƒ ๊ณ„ํš
        • ๐ŸŸ  ์˜ฌํ•ด ๋ชฉํ‘œ
      • ๐ŸŸก TIL
        • ๐ŸŸก TIL ์ผ๊ธฐ
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ๋ฐฉํ•™์Šคํ„ฐ๋””
    ์ตœ๊ทผ์ด์Šˆ
    ๊ธฐ์—…๋ถ„์„
    ๋„ค์นด๋ผ์ฟ ๋ฐฐ
    ๋ฐฑ์ค€
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ์ž๋ฃŒ๊ตฌ์กฐ
    ์ฝ”ํ…Œ
    ์‚ผ์„ฑ์ „์ž
    IT์ด์Šˆ
    ๋ฌธ์ œํ’€์ด
    ์ฝ”๋“œ์Šคํ„ฐ๋””
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
    ์Šค๋งˆํŠธ์‹ฑ์Šค
    ์Šคํ„ฐ๋””
    ๋‰ด์Šค์Šคํฌ๋žฉ
    Ai
    ์ฝ”๋”ฉ
    ์ฝ”๋“œ๋ฆฌ๋ทฐ
    ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ
    SW์ด์Šˆ
    ์›น๊ฐœ๋ฐœ
    css
    ๋™ํ–ฅ๋ถ„์„
    C
    ๊ฐœ๋ฐœ๊ณต๋ถ€
    ๋ถ„์„๋ ˆํฌํŠธ
    ๊ฐœ๋ฐœ
    ๋‰ด์Šค๋ฃธ
    html
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.5
eyes from es
[TS] 1. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ก 
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”