TypeScript: ํบ์๋ณด๊ธฐ! ๐ก๏ธ
TypeScript(ํ์ ์คํฌ๋ฆฝํธ)๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ํผ์ ์ผ๋ก, ์ฝ๋์ ์ ๋ขฐ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋ํญ ๊ฐ์ ํ๋ ๋๊ตฌ์ ๋๋ค. ์ด๋ฒ ๊ธ์์๋ TypeScript๊ฐ ๋ฌด์์ธ์ง, ์ ์ฌ์ฉํ๋์ง, ๊ธฐ๋ณธ ๊ฐ๋ , ๊ทธ๋ฆฌ๊ณ ์ค์ ์์ ๊น์ง ๋ค๋ฃฐ ๊ฑฐ์์. TypeScript๋ฅผ ํตํด ๋ ์์ ํ๊ณ ํจ์จ์ ์ธ ๊ฐ๋ฐ ์ธ๊ณ๋ก ๋ค์ด๊ฐ ๋ณด์ธ์!
TypeScript๋? ๐ค
TypeScript๋ Microsoft๊ฐ ๊ฐ๋ฐํ ์คํ ์์ค ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก, ์๋ฐ์คํฌ๋ฆฝํธ์ ์ ์ ํ์ ์์คํ ์ ์ถ๊ฐํฉ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ชจ๋ ๊ธฐ๋ฅ์ ํฌํจํ๋ฉด์๋ ํ์ ๊ฒ์ฌ ๋ฐ ์ฝ๋ ์๋ ์์ฑ์ ํตํด ๊ฐ๋ฐ์๊ฐ ๋ ์์ ์ ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋๋ก ๋์ฃ .
์ฃผ์ ํน์ง
- ์ ์ ํ์
๊ฒ์ฌ
- ์ปดํ์ผ ๋จ๊ณ์์ ํ์ ์ค๋ฅ๋ฅผ ๊ฐ์งํด ์คํ ์ ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
- ์ต์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฅ ์ง์
- ES6+ ๋ฌธ๋ฒ๊ณผ ๋ฏธ๋์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฅ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ํ์
์ถ๋ก
- ํ์ ์ ๋ช ์์ ์ผ๋ก ์ง์ ํ์ง ์์๋, TypeScript๊ฐ ํ์ ์ ์ถ๋ก ํฉ๋๋ค.
- ๊ฐ๋ ฅํ ๊ฐ๋ฐ ๋๊ตฌ ์ง์
- IDE์์ ์ฐ๋์ผ๋ก ์ฝ๋ ์์ฑ, ๋ฆฌํฉํ ๋ง, ๋๋ฒ๊น ์ด ๋์ฑ ์ฌ์์ง๋๋ค.
TypeScript๋ฅผ ์ ์ฌ์ฉํ ๊น? ๐คทโ๏ธ
- ์ฝ๋ ํ์ง ๊ฐ์
- ํ์ ์์คํ ๋๋ถ์ ์ค๋ฅ๋ฅผ ์ค์ด๊ณ ์ ์ง๋ณด์๋ฅผ ์ฉ์ดํ๊ฒ ๋ง๋ญ๋๋ค.
- ๊ฐ๋ฐ ์๋ ํฅ์
- IntelliSense์ ๊ฐ์ IDE ๊ธฐ๋ฅ์ ํตํด ์๋ ์์ฑ, ์ค์๊ฐ ์ค๋ฅ ๊ฒ์ถ ๋ฑ์ด ๊ฐ๋ฅํด์ ธ ์์ฐ์ฑ์ด ๋์์ง๋๋ค.
- ํ์
ํจ์จ์ฑ ์ฆ๊ฐ
- ์ฝ๋์ ์๋๋ฅผ ๋ช ํํ ๋๋ฌ๋ผ ์ ์์ด ํ์ ๊ฐ ์ดํด๊ฐ ์ฌ์์ง๋๋ค.
- ๋๊ท๋ชจ ํ๋ก์ ํธ์์ ํ์
- ํ๋ก์ ํธ๊ฐ ์ปค์ง์๋ก ํ์ ์์ ์ฑ์ด ์ค์ํด์ง๋๋ฐ, TypeScript๋ ์ด๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๋ณด์ฅํฉ๋๋ค.
TypeScript ์ค์น ๋ฐ ์ค์ โ๏ธ
์ค์นํ๊ธฐ
TypeScript๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด typescript ํจํค์ง๋ฅผ ์ค์นํ์ธ์.
npm install -g typescript
TypeScript ํ์ผ ์คํํ๊ธฐ
TypeScript ํ์ผ์ .ts ํ์ฅ์๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์ปดํ์ผ๋ฌ๊ฐ ์ด๋ฅผ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ณํํฉ๋๋ค.
1. tsc ๋ช ๋ น์ด๋ก TypeScript ํ์ผ์ ์ปดํ์ผํ์ธ์.
tsc filename.ts
2. ์์ฑ๋ .js ํ์ผ์ ์คํํฉ๋๋ค.
node filename.js
TypeScript์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ ๐
1. ํ์ ์ฃผ์ (Type Annotations)
TypeScript๋ ๋ณ์, ํจ์, ๋งค๊ฐ๋ณ์, ๋ฐํ ๊ฐ ๋ฑ์ ํ์ ์ ๋ช ์ํ ์ ์์ต๋๋ค.
let username: string = "Alice"; // ๋ฌธ์์ด
let age: number = 25; // ์ซ์
let isDeveloper: boolean = true; // ๋ถ๋ฆฌ์ธ
2. ํจ์ ํ์
ํจ์์ ๋งค๊ฐ๋ณ์์ ๋ฐํ ๊ฐ์ ํ์ ์ ์ง์ ํฉ๋๋ค.
function add(a: number, b: number): number {
return a + b;
}
3. ๋ฐฐ์ด๊ณผ ๊ฐ์ฒด ํ์
// ๋ฐฐ์ด ํ์
let numbers: number[] = [1, 2, 3];
// ๊ฐ์ฒด ํ์
let user: { name: string; age: number } = {
name: "Alice",
age: 25,
};
4. ์ธํฐํ์ด์ค์ ํ์ (Interfaces & Types)
์ธํฐํ์ด์ค
interface User {
name: string;
age: number;
}
const user: User = {
name: "Alice",
age: 25,
};
ํ์ ๋ณ์นญ
type UserType = {
name: string;
age: number;
};
const user: UserType = {
name: "Alice",
age: 25,
};
5. ์ ๋์จ(Union)๊ณผ ์ธํฐ์น์ (Intersection)
์ ๋์จ
let id: number | string; // ์ซ์ ๋๋ ๋ฌธ์์ด ๊ฐ๋ฅ
id = 123;
id = "ABC";
์ธํฐ์น์
type Admin = { role: string };
type User = { name: string };
const admin: Admin & User = {
role: "admin",
name: "Alice",
};
6. ์ ๋ค๋ฆญ (Generics)
์ ๋ค๋ฆญ์ ๋ค์ํ ํ์ ์ ์ฒ๋ฆฌํ๋ ์ ์ฐํ ํจ์์ ํด๋์ค๋ฅผ ์์ฑํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
function identity<T>(arg: T): T {
return arg;
}
console.log(identity<string>("Hello"));
console.log(identity<number>(123));
TypeScript์ ์ค์ ํ์ฉ ๐ป
1. React์ TypeScript
React์ TypeScript๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ฉด ์ปดํฌ๋ํธ์ props์ state์ ํ์ ์ ์ง์ ํ ์ ์์ต๋๋ค.
type ButtonProps = {
label: string;
onClick: () => void;
};
const Button: React.FC<ButtonProps> = ({ label, onClick }) => (
<button onClick={onClick}>{label}</button>
);
2. API ์๋ต ํ์ ์ ์
TypeScript๋ API ์๋ต ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
type ApiResponse = {
id: number;
name: string;
email: string;
};
async function fetchUser(): Promise<ApiResponse> {
const response = await fetch("/api/user");
return response.json();
}
3. ๋๊ท๋ชจ ํ๋ก์ ํธ์์์ ๋ชจ๋ํ
ํ์ ์ ์๋ฅผ ๋ณ๋์ ํ์ผ๋ก ๋ถ๋ฆฌํด ๊ด๋ฆฌํ๋ฉด ํ๋ก์ ํธ์ ๊ตฌ์กฐ๊ฐ ๋ช ํํด์ง๋๋ค.
TypeScript์ ์ฃผ์ํ ์ ๋ฐ ํ๊ณ ๐ง
- ๋ฐํ์ ํ์
๊ฒ์ฌ ์์
- TypeScript๋ ์ปดํ์ผ ๋จ๊ณ์์๋ง ํ์ ๊ฒ์ฌ๋ฅผ ์ํํ๋ฏ๋ก, ์คํ ์ค์๋ ์ค๋ฅ๋ฅผ ํ์งํ์ง ๋ชปํฉ๋๋ค.
- ํ์ต ๊ณก์
- ๊ธฐ์กด ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ๋ฐ์์๊ฒ๋ ์๋ก์ด ๋ฌธ๋ฒ๊ณผ ๊ฐ๋ ์ ์ตํ๋ ๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
- ๋น๋ ๋จ๊ณ ์ถ๊ฐ
- TypeScript๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ปดํ์ผ๋๋ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๋ฏ๋ก, ๋น๋ ์๊ฐ์ด ์ถ๊ฐ๋ฉ๋๋ค.
๋ง๋ฌด๋ฆฌ: TypeScript๋ก ์์ ํ ์ฝ๋ ์์ฑ! ๐ ๏ธ
TypeScript๋ ์ฝ๋ ์์ ์ฑ๊ณผ ๊ฐ๋ฐ ์์ฐ์ฑ์ ๋์ด๋ ๊ฐ๋ ฅํ ๋๊ตฌ์ ๋๋ค. ์ฒ์์ ์กฐ๊ธ ๋ณต์กํ๊ฒ ๋๊ปด์ง ์ ์์ง๋ง, ์ต์ํด์ง๋ฉด ํ๋ก์ ํธ์ ์ ์ง๋ณด์์ฑ๊ณผ ํ ํ์ ํจ์จ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ด์.
TypeScript๋ฅผ ๋ฐฐ์ฐ๋ ์ฌ์ ์ ํ์ํ ๊ฒ์ ํธ๊ธฐ์ฌ๊ณผ ๊พธ์คํจ! ๋ ๋์ ์ฝ๋๋ฅผ ์์ฑํ๋ฉฐ ๊ฐ๋ฐ์์ ์ ์ค๋ก ๊ฑฐ๋ญ๋ ๋ด ์๋ค! ๐
๐ท์ ์ค์ ๊ฐ๋ฐ์๊ฐ ๋์ด๋ด ์๋น! ๐ท