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 ์ฝ๋๋ ์ฐพ์๋ณด๊ธฐ์ ๊ฐ์ ๋ค์ํ ํ๊ฒฝ์์ ์คํ๋ ์ ์๋ค.