TypeScript

๐ŸŒŸ 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 ๊ธฐ๋ฐ˜)
  • ๋Œ€๊ทœ๋ชจ ๊ธฐ์—… ์‹œ์Šคํ…œ, ๊ธˆ์œต/๊ณต๊ณต ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ

Leave a Comment