๐ TypeScript๋?
TypeScript๋ Microsoft์์ ๊ฐ๋ฐํ ์คํ์์ค ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์
๋๋ค.
๊ธฐ์กด JavaScript๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋, ์ ์ ํ์
(static typing) ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์์ ์ธ์ด์
๋๋ค.
์ฆ, JavaScript์ ๋จ์ ์ ๋ณด์ํ๋ฉด์ ๋ ์์ ์ ์ด๊ณ ๊ท๋ชจ ์๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ง๋ค๊ธฐ ์ํ ๋๊ตฌ์
๋๋ค.
โ
JavaScript + Type = TypeScript
๐ง ์ TypeScript๋ฅผ ์ธ๊น?
JavaScript์ ๋ฌธ์ ์
- ๋ณ์์ ์ด๋ค ํ์
์ด ๋ค์ด๊ฐ๋์ง ์ ์ ์์
- ์คํ, ํ์
์ค๋ฅ๊ฐ ๋ฐํ์(runtime)์์ผ ๋ฐ๊ฒฌ๋จ
- ๋๊ท๋ชจ ํ๋ก์ ํธ์์๋ ๋ฒ๊ทธ ์ถ์ ์ด ์ด๋ ค์
TypeScript์ ํด๊ฒฐ์ฑ
- ํ์
์ ๋ช
์ํจ์ผ๋ก์จ ์ปดํ์ผ ๋จ๊ณ์์ ์ค๋ฅ๋ฅผ ์ฌ์ ๊ฒ์ถ
- IDE ์๋์์ฑ, ๋ฆฌํฉํ ๋ง ์ง์ ๊ฐํ
- ํ ํ์
๊ณผ ์ ์ง๋ณด์์ ์ ๋ฆฌ
๐ TypeScript์ ์ฃผ์ ํน์ง
ํน์ง | ์ค๋ช
|
---|
๐ ์ ์ ํ์
๊ฒ์ฌ | ๋ณ์, ํจ์์ ํ์
์ ๋ช
์ํ ์ ์์ผ๋ฉฐ ์ปดํ์ผ ์์ ์ ํ์
์ค๋ฅ ๊ฐ์ง |
โฑ ๋น ๋ฅธ ์ค๋ฅ ๊ฒ์ถ | ์คํ ์ ์ ๋ฒ๊ทธ๋ฅผ ํ์ธํ ์ ์์ (๋ฐํ์ ์๋ฌ ๊ฐ์) |
๐ฏ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ง์ | ํด๋์ค, ์ธํฐํ์ด์ค, ์์ ๋ฑ ์ง์ |
๐งฉ JavaScript 100% ํธํ | JS ๋ฌธ๋ฒ ๊ทธ๋๋ก ์ฌ์ฉ ๊ฐ๋ฅ, ์ ์ง์ ์ผ๋ก ์ ์ฉ ๊ฐ๋ฅ |
๐ ๋๊ตฌ ์นํ์ฑ | VS Code ๋ฑ IDE์์ ๊ฐ๋ ฅํ ์๋์์ฑ, ๊ฒฝ๊ณ , ๋ฆฌํฉํ ๋ง ์ง์ |
๐งพ ๊ธฐ๋ณธ ๋ฌธ๋ฒ ์์
1. ๋ณ์ ์ ์ธ๊ณผ ํ์
let name: string = "ํ๊ธธ๋";
let age: number = 30;
let isAdmin: boolean = true;
2. ๋ฐฐ์ด๊ณผ ๊ฐ์ฒด
let numbers: number[] = [1, 2, 3];
let user: { name: string; age: number } = {
name: "์ฒ ์",
age: 25
};
3. ํจ์์ ํ์
์ง์
function add(x: number, y: number): number {
return x + y;
}
4. ์ธํฐํ์ด์ค
interface Person {
name: string;
age: number;
}
const person: Person = {
name: "์ํฌ",
age: 22
};
5. ํด๋์ค
class Animal {
constructor(public name: string) {}
speak(): void {
console.log(`${this.name}์ด(๊ฐ) ์๋ฆฌ๋ฅผ ๋
๋๋ค.`);
}
}
const dog = new Animal("๊ฐ์์ง");
dog.speak();
6. ์ ๋์จ ํ์
/ ํ์
๋ณ์นญ
type Status = "success" | "error" | "loading";
let currentStatus: Status = "success";
๐ฆ ์ค์น ๋ฐ ์ปดํ์ผ
npm install -g typescript # TypeScript ์ค์น
tsc --init # tsconfig.json ์์ฑ
tsc index.ts # TypeScript โ JavaScript ์ปดํ์ผ
๐งช ๊ณ ๊ธ ๊ธฐ๋ฅ ์์ฝ
๊ธฐ๋ฅ | ์์ |
---|
์ ๋ค๋ฆญ (Generic) | function identity<T>(arg: T): T |
ํ์
์ถ๋ก | let name = "hello"; โ string ์๋ ์ถ๋ก |
์ ํ์ ์์ฑ | interface User { name: string; age?: number } |
readonly | ์ฝ๊ธฐ ์ ์ฉ ์์ฑ ์ง์ |
ํ์
๊ฐ๋ | if (typeof value === "string") { ... } |
โ๏ธ TypeScript์ ์ฅ๋จ์
โ
์ฅ์
- ๋๊ท๋ชจ ํ๋ก์ ํธ์ ์ ํฉ
- ๋ฒ๊ทธ ์๋ฐฉ์ ํ์ (์ปดํ์ผ ๋จ๊ณ์์ ์ค๋ฅ ๊ฐ์ง)
- ์ฝ๋ ์๋์์ฑ, ๋ฆฌํฉํ ๋ง์ด ์ฌ์
- ์ธํฐํ์ด์ค์ ํด๋์ค ๋ฑ OOP ์ง์
- JS์ ํธํ์ฑ ๋์ (๊ธฐ์กด ์ฝ๋ ์ฌ์ฉ ๊ฐ๋ฅ)
โ ๋จ์
- ๋ฌ๋ ์ปค๋ธ ์กด์ฌ (์ฒ์์ ๋ณต์กํด ๋ณด์ผ ์ ์์)
- ์ค์ ๋ฐ ๋น๋ ํ๊ฒฝ ์ถ๊ฐ ํ์
- ๊ฐ๋จํ ํ๋ก์ ํธ์๋ ๊ณผํ ์ ์์
๐ข TypeScript ์ฌ์ฉํ๋ ๋ํ ๊ธฐ์
- Microsoft (๋ฌผ๋ก !)
- Google (Angular ๊ณต์ ์ธ์ด)
- Slack
- Airbnb
- Uber
- Shopify
๐ ์์ฝ ์ ๋ฆฌ
ํญ๋ชฉ | ๋ด์ฉ |
---|
์ธ์ด๋ช
| TypeScript |
๊ธฐ๋ฐ ์ธ์ด | JavaScript |
ํต์ฌ ๊ธฐ๋ฅ | ์ ์ ํ์
๊ฒ์ฌ, ํด๋์ค, ์ธํฐํ์ด์ค, ์ ๋ค๋ฆญ |
๋ํ ํ์ฉ ๋ถ์ผ | ํ๋ก ํธ์๋(React, Angular, Vue), Node.js ๋ฐฑ์๋ |
์ ํฉํ ๋์ | ์ค/๋ํ ํ๋ก์ ํธ, ํ์
, ์ฅ๊ธฐ ์ ์ง๋ณด์ ํ๋ก์ ํธ |
๐ง ์ฌ์ฉ ์ถ์ฒ ์์
- Angular ํ๋ก์ ํธ (๊ณต์ ์ธ์ด๋ก TypeScript ์ฌ์ฉ)
- React + TypeScript ์กฐํฉ์ผ๋ก ์์ ํ UI ๊ฐ๋ฐ
- NestJS ๊ฐ์ ๋ฐฑ์๋ ํ๋ ์์ํฌ (Node.js ๊ธฐ๋ฐ)
- ๋๊ท๋ชจ ๊ธฐ์
์์คํ
, ๊ธ์ต/๊ณต๊ณต ์์คํ
๊ฐ๋ฐ