โ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๊ฐ์ด๋ ๋ชฉ๋ก์ผ๋ก ๋์๊ฐ๊ธฐ
๐ฆ TypeScript ์์ธ ๊ฐ์ด๋ โ
"์๋ฐ์คํฌ๋ฆฝํธ๋ผ๋ ์์ ๋กญ๊ณ ๋ณ๋์ค๋ฌ์ด ์น๊ตฌ์๊ฒ ํผํผํ ์์ ์ฅ์น(ํ์ )๋ฅผ ๋ฌ์์ฃผ๋ ์ค๋งํธํ ๋น์"
๐ก 1. 30๋ ์ฐจ ์ ๋ฐฐ์ ์ฌ์ด ์ค๋ช โ
์น ์ธ์์ ์ง๋ฐฐํ๋ JavaScript๋ ์์ฃผ ์์ ๋ก์ด ์น๊ตฌ์ ๋๋ค. ๋ณ์์ ์ซ์๋ฅผ ๋ฃ์๋ค๊ฐ ๊ฐ์๊ธฐ ๋ฌธ์๋ฅผ ๋ฃ์ด๋ "์, ๊ด์ฐฎ์!" ํ๊ณ ๋ฐ์์ค๋๋ค. ํผ์์ ์์ ํ์ด์ง๋ฅผ ๋ง๋ค ๋๋ ํธํ์ง๋ง, ์ฌ๋ฌ ๋ช ์ ๊ฐ๋ฐ์๊ฐ ๋ชจ์ฌ ์๋ง ์ค์ ์ฝ๋๋ฅผ ์ง๊ฒ ๋๋ฉด ์ด '์์ ๋ก์'์ด ์ธ์ ํฐ์ง์ง ๋ชจ๋ฅด๋ ํญํ(๋ฐํ์ ์๋ฌ)์ด ๋ฉ๋๋ค.
TypeScript๋ ๋ฐ๋ก ์ด ์๋ฐ์คํฌ๋ฆฝํธ์ "ํ์ (Type)" ์ด๋ผ๋ ๊ผฌ๋ฆฌํ๋ฅผ ๊ฐ์ ๋ก ๋ถ์ฌ์, ์ฝ๋๋ฅผ ์คํํ๊ธฐ๋ ์ ์ ์๋ฌ๋ฅผ ์ก์๋ด๋ ์ญํ ์ ํฉ๋๋ค.
- ๋น์ ํ์๋ฉด: ์ค๊ณ๋ ์์ด ๋์ถฉ ์ง๋ ๊ฐ๊ฑด๋ฌผ(JavaScript)์ ๊ผผ๊ผผํ ์์ ๊ธฐ์ค๊ณผ 3D ์ค๊ณ๋(TypeScript)๋ฅผ ์ ํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
๐ ๏ธ 2. ์ด๋์ ์ฃผ๋ก ์ฐ์ด๋์? โ
- ๋ชจ๋ ์น ํ๋ก ํธ์๋: React, Vue, Next.js ๋ฑ์ ํ๋ ์์ํฌ์ ๊ฒฐํฉํด ํ๋ฉด๋จ ๋ก์ง์ ์งค ๋ ์ฌ์ค์์ ํ์ค(De facto standard)์ผ๋ก ์ฐ์ ๋๋ค.
- ๋๊ท๋ชจ ๋ฐฑ์๋ ์๋น์ค: NestJS ํ๋ ์์ํฌ ๋ฑ์ ์ด์ฉํด ํผํผํ ์๋ฒ API๋ฅผ ๊ตฌ์ถํ ๋ ๋๋ฆฌ ์ฐ์ ๋๋ค.
โ๏ธ 3. ์ฅ์ ๊ณผ ๋จ์ (์ ๋ฐฐ์ ์์ง ํ๋ง๋) โ
- ์ฅ์ (์ต๊ณ ์ ํํธ๋):
- ๊ท์ ๊ฐ์ ์๋ฌ ๊ฐ์ง: ์ฝ๋ ์คํ ์ ์ ์คํ๋ ํ์ ์ค์๋ฅผ ์๋ํฐ(VS Code ๋ฑ)๊ฐ ์ฆ์ ๋นจ๊ฐ ์ค๋ก ์๋ ค์ค๋๋ค.
- ์๋ ์์ฑ: ๊ฐ์ฒด์ ์์ฑ์ ์ผ์ผ์ด ๊ธฐ์ตํ ํ์ ์์ด ๋ง์ฐ์ค๋ง ์ฌ๋ ค๋ ๋ฌด์์ ์ธ ์ ์๋์ง ๊ฐ์ด๋๊ฐ ์ ๊ณต๋ฉ๋๋ค.
- ๋จ์ (์ง์
์ฅ๋ฒฝ):
- ๊ณต๋ถํ ๊ฒ ๋ง์: ์ธํฐํ์ด์ค(Interface), ์ ๋ค๋ฆญ(Generic) ๋ฑ ํ์ ๊ด๋ จ ๊ท์น์ ์ถ๊ฐ๋ก ๊ณต๋ถํด์ผ ํฉ๋๋ค.
- ๋น๋(์ปดํ์ผ) ์๊ฐ: ๋ธ๋ผ์ฐ์ ๋ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ์ง ๋ชปํ๋ฏ๋ก, ๊ฒฐ๊ตญ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ํ ๋ฒ ๋ณํ(์ปดํ์ผ)ํด์ฃผ๋ ๊ณผ์ ์ด ํ์ํฉ๋๋ค.
๐ 4. ์ด๋ณด์๋ฅผ ์ํ ์ฒซ๊ฑธ์ ์ฝ๋ โ
ํ์
์คํฌ๋ฆฝํธ๋ ๋ณ์ ๋ค์ : type์ ๋ถ์ฌ์ ์ด ๋ณ์๊ฐ ์ด๋ค ๋ฐ์ดํฐ๋ง ๋ฐ์ ๊ฒ์ธ์ง ์ง์ ํฉ๋๋ค.
// 1. ํ์
์ ๊ผผ๊ผผํ๊ฒ ์ ์ํฉ๋๋ค.
interface Developer {
name: string;
careerYears: number;
isSenior: boolean;
}
// 2. ์ ์๋ ํ์
์ ๋ง์ถ์ด ๋ณ์๋ฅผ ์ ์ธํฉ๋๋ค.
const seniorDev: Developer = {
name: "Kim Antigravity",
careerYears: 30,
isSenior: true
};
// ๋ง์ฝ ์๋์ ๊ฐ์ด ์๋ชป๋ ํ์
์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ผ๋ฉด ์ฝ๋๊ฐ ๋น๋๋๊ธฐ๋ ์ ์ ์๋ฌ๋ฅผ ํ์ํฉ๋๋ค.
// seniorDev.careerYears = "30๋
"; // โ ์๋ฌ ๋ฐ์! (์ซ์ ํ์
๋ง ๋ค์ด๊ฐ ์ ์์)๐ฏ 5. ์ด๋ณด์ ์ถ์ฒ ๊ณต๋ถ ๋ฐฉํฅ โ
- ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ธฐ์ด ๊ฐ๋ (๋ณ์, ํจ์, ๋น๋๊ธฐ)์ ๋จผ์ 60% ์ด์ ์์งํ์ธ์.
- ์ฒ์๋ถํฐ ๋ชจ๋ ํ์
๊ท์น์ ๋ง์คํฐํ๋ ค ํ์ง ๋ง๊ณ ๋ณ์ ์ ์ธ ์
: string,: number๋ฅผ ๋ถ์ด๋ ๊ฒ๋ถํฐ ์์ํ์ธ์. - ์ ์ฐจ ์ธํฐํ์ด์ค(
interface)๋ฅผ ํ์ฉํด ๊ฐ์ง ๋ฐ์ดํฐ๋ฅผ ๊ท๊ฒฉํํ๋ ์ฐ์ต์ผ๋ก ๋ํ๊ฐ๋ฉด ๋น ๋ฅด๊ฒ ์ ์ํ ์ ์์ต๋๋ค.