JavaScript๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„๊ตํ•ด TypeScript๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

<script>
// JavaScript 

let calculator  = 5 + '3'; // '53';

// TypeScript
let calculator :number = 5 + '3'; 
// 'string' ํ˜•์‹์€ 'number' ํ˜•์‹์— ํ• ๋‹นํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
</script>

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” Dynamic typing ์„ ์ง€์›ํ•˜๋Š” ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์—,
JavaScript๋Š” ํƒ€์ž…์— ๋Œ€ํ•ด ๊ด€๋Œ€ํ•˜๋‹ค.

๊ทผ๋ฐ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์‚ฌ์†Œํ•œ ํ•˜๋‚˜ํ•˜๋‚˜ ์ „๋ถ€ ์—๋Ÿฌ๋กœ ์žก์•„์ค€๋‹ค.

์‚ฌ์‹ค ์œ„ ์˜ˆ์ œ์ฝ”๋“œ๋งŒ ๋ณด๋ฉด ๊ตณ์ด ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋‚˜? ์ƒ๊ฐ์ด ๋“ค๊ธฐ ๋งˆ๋ จ์ด๋‹ค.

Dynamic typing์€ย  ์ž‘์€๋‹จ์œ„๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋Š” ๊ธฐ๋Šฅ๋“ค์„ ๊ฐœ๋ฐœํ•  ๋• ํŽธ๋ฆฌํ•˜๊ฒ ์ง€๋งŒ ์—ฌ๋Ÿฌ๋ถ„ ํฐ ๋‹จ์œ„๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋Š” ํ”„๋กœ์ ํŠธํ•  ๋•Œ๋Š” ๋…์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์—๋Ÿฌ๋ฉ”์„ธ์ง€๋„ ๋” ์ •ํ™•ํ•ด์ง„๋‹ค.ย 
์Œฉ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” "์—ฌ๊ธฐ๊ฐ€ ๋ฌธ์ œ์ผ๊ฒƒ ๊ฐ™์€๋ฐ์š”?" ๊ฐ™์€ ์• ๋งคํ•œ ์—๋Ÿฌ๋ฉ”์„ธ์ง€๊ฐ€ ๋Œ€๋‹ค์ˆ˜ ์ธ๋ฐ
ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์—„๊ฒฉํ•œ ํƒ€์ž…๋ฃฐ ๋•๋ถ„์—
"์—ฌ๊ธฐ๋Š” ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž์—ด์ด ๋“ค์–ด์™€์•ผํ•œ๋‹ค ๋ฌธ์ž์—ด๋กœ ์ˆ˜์ •ํ•ด์š”."
"calculrator?? ์ŠคํŽ ๋ง์ด ํ‹€๋ ธ์–ด calculator๋กœ ์ˆ˜์ •ํ•ด"
๊ฐ™์€ ๋น„์Šทํ•œ ๋งฅ๋ฝ์œผ๋กœ ๋ช…ํ™•ํ•œ ์—๋Ÿฌ๋ฉ”์„ธ์ง€๊ฐ€ ๋Œ€๋‹ค์ˆ˜ ์ด๋‹ค.

TypeScript์˜ ๋™์ž‘ ์›๋ฆฌ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

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

profile
โ˜„๏ธ

0๊ฐœ์˜ ๋Œ“๊ธ€