ํ๋ก ํธ์๋, ๋ฐฑ์๋ ์ด๋์๋ ๋น ์ง ์ ์๋ ์ธ์ด๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ(JavaScript) ์
๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ์๋ฐ์คํฌ๋ฆฝํธ ์์ ์ฌ๋ผ์จ ์ธ์ด๊ฐ ๋ฐ๋ก ํ์
์คํฌ๋ฆฝํธ(TypeScript) ์
๋๋ค.
๋ง์ ํ๋ก์ ํธ๋ค์ด ๋จ์ํ ์๋ฐ์คํฌ๋ฆฝํธ ๋์ ํ์
์คํฌ๋ฆฝํธ๋ฅผ ๋์
ํ๋ ์ด์ ๋ ๋ฌด์์ผ๊น์?
์๋์์ ์ฐจ์ด์ ์ ์ ๋ฆฌํด ๋ณด๊ฒ ์ต๋๋ค.
1. ์ธ์ด์ ์ ์
- JavaScript
- ์น์ ์ํ ์ธํฐํ๋ฆฌํฐ ์ธ์ด
- ๋์ ํ์ (Dynamic Typing)์ ์ง์ → ์คํ ์์ ์ ํ์ ์ด ๊ฒฐ์ ๋จ
- ๋ธ๋ผ์ฐ์ ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์คํ ๊ฐ๋ฅ
- TypeScript
- ์๋ฐ์คํฌ๋ฆฝํธ์ ์์ ์งํฉ(Superset) ์ธ์ด
- ์ ์ ํ์ (Static Typing) ์ง์ → ์ปดํ์ผ ๋จ๊ณ์์ ํ์ ์ฒดํฌ
- ์ต์ข ์ ์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ๋ก ํธ๋์คํ์ผ ๋์ด ์คํ๋จ
2. ํ์ (Type) ์์คํ
// JavaScript
function add(a, b) {
return a + b;
}
add(10, "20"); // ์คํ๋จ (๊ฒฐ๊ณผ: "1020")
// TypeScript
function add(a: number, b: number): number {
return a + b;
}
add(10, "20"); // โ ์๋ฌ ๋ฐ์ (ํ์
๋ถ์ผ์น)
๐ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์คํํด๋ด์ผ ์ ์ ์์ง๋ง, ํ์ ์คํฌ๋ฆฝํธ๋ ์ปดํ์ผ ์์ ์ ์ค๋ฅ๋ฅผ ์ก์์ค๋๋ค.
3. ๊ฐ๋ฐ ๊ฒฝํ (DX, Developer Experience)
- ์๋ฐ์คํฌ๋ฆฝํธ
- ์์ ๋กญ๊ณ ๋น ๋ฅด๊ฒ ์ฝ๋๋ฅผ ์์ฑ ๊ฐ๋ฅ
- ํ์ง๋ง ๋ฐํ์ ์ค๋ฅ(Runtime Error)๋ฅผ ์์ฃผ ๋ง๋ ์ ์์
- ํ์
์คํฌ๋ฆฝํธ
- IDE์์ ์๋์์ฑ, ํ์ ์ถ๋ก , ์ฝ๋ ๋ฆฌํฉํ ๋ง์ด ํจ์ฌ ์์ ์
- ํ์ ์ ํ์ ์ ์๊ฐ ํ๋์ ๋ฌธ์ ์ญํ ์ ํด์ค
4. ์ฝ๋ ์ ์ง๋ณด์
- JavaScript
- ์์ ํ๋ก์ ํธ์๋ ์ถฉ๋ถํ ๋น ๋ฅด๊ณ ํธ๋ฆฌ
- ๊ท๋ชจ๊ฐ ์ปค์ง๋ฉด ๋ณ์/ํจ์ ํ์ ์ถ์ ์ด ์ด๋ ค์์ ธ ์ ์ง๋ณด์ ํ๋ฆ
- TypeScript
- ํฐ ๊ท๋ชจ์ ํ๋ก์ ํธ์์ ์ฝ๋ ์์ ์ฑ์ ๋ณด์ฅ
- ์ค๋ ์๊ฐ์ด ์ง๋๋ ํ์ ๋๋ถ์ ๋ฒ๊ทธ ๋ฐ์๋ฅ ๊ฐ์
5. ์์ฝ
- ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋น ๋ฅธ ๊ฐ๋ฐ๊ณผ ์ ์ฐ์ฑ์ ๊ฐ์
- ํ์ ์คํฌ๋ฆฝํธ๋ ์์ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๊ฐ์
- ์์ฆ์ ๋๋ถ๋ถ TypeScript ๊ธฐ๋ฐ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์์ํ๊ณ , ํ์ํ๋ฉด JS์ ํผ์ฉ
โ ๊ฒฐ๋ก
๐ ์์ ํ๋ก์ ํธ → JavaScript
๐ ์ค๋ํ ํ๋ก์ ํธ, ํ์
→ TypeScript
ํ์
์์๋ ํ์
์คํฌ๋ฆฝํธ๋ฅผ ์ ์ ๋ ๊ธฐ๋ณธ์ผ๋ก ์ฑํํ๊ณ ์์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ดํดํ ํ ํ์
์คํฌ๋ฆฝํธ๋ฅผ ๋ฐฐ์ฐ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ ํ์ต ๊ฒฝ๋ก์
๋๋ค.
#JavaScript #TypeScript #์น๊ฐ๋ฐ #ํ๋ก ํธ์๋ #๋ฐฑ์๋ #๊ฐ๋ฐ๊ณต๋ถ #์ฝ๋ฉ #ํ๋ก๊ทธ๋๋ฐ #๊ธฐ์ ๋ธ๋ก๊ทธ #React #NodeJS #TS