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

zerg96

Recent Posts

๋…ธํŠธ๋ถ(์œˆ๋„์šฐ)์—์„œ ์•„์ดํฐ ์œ ์„  ํ…Œ๋”๋ง ํ•˜๊ธฐ

์œˆ๋„์šฐ ์šด์˜์ฒด์ œ์˜ ๋…ธํŠธ๋ถ์—์„œ๋Š” iPhone ์œ ์„  ํ…Œ๋”๋ง์ด ์ž˜ ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๋ณดํ†ต iPhone์˜ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์„ค์น˜๊ฐ€ ์•ˆ๋˜์žˆ์–ด์„œ์ธ…

3์ผ ago

์˜ค๋ผํด ๋ž˜์น˜(Latch)

์˜ค๋ผํด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์„ฑ๋Šฅ์„ ๋…ผํ•  ๋•Œ, ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝํ•ฉ(Contention)์€ ํ”ผํ•  ์ˆ˜ ์—†๋Š” ์ฃผ์ œ๋‹ค. ํŠนํžˆ ๋‹ค์ˆ˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€…

7์ผ ago

์‚ฌ์žฅ๋‹˜๋„ 3ํ‘œ, ๋‚˜๋„ 3ํ‘œ? ‘3%๋ฃฐ’ ์™„์ „ ์ •๋ณต!

์•ˆ๋…•ํ•˜์„ธ์š”, ํ˜น์‹œ ์ด๋Ÿฐ ์ƒ๊ฐํ•ด ๋ณธ ์  ์—†์œผ์‹ ๊ฐ€์š”? "๋‚ด๊ฐ€ ํˆฌ์žํ•œ ํšŒ์‚ฌ๋Š” ๋ˆ„๊ฐ€ ๊ฐ์‹œํ•˜๊ณ , ์–ด๋–ป๊ฒŒ ์šด์˜๋ ๊นŒ?" ์˜ค๋Š˜์€…

3์ฃผ ago

Vector Store(๋ฒกํ„ฐ ์Šคํ† ์–ด)

'๋ฒกํ„ฐ ์Šคํ† ์–ด' ์™„๋ฒฝ ๊ฐ€์ด๋“œ: AI ์‹œ๋Œ€, ๋ฐ์ดํ„ฐ์˜ ์ƒˆ๋กœ์šด ์‹ฌ์žฅ์„ ๋งŒ๋‚˜๋‹ค IT ์—…๊ณ„๋Š” ์ธ๊ณต์ง€๋Šฅ(AI)์ด๋ผ๋Š” ๊ฑฐ๋Œ€ํ•œ ํŒจ๋Ÿฌ๋‹ค์ž„์˜…

3์ฃผ ago

Gemini CLI (์žฌ๋ฏธ๋‚˜์ด CLI)

1. Gemini CLI๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”? Gemini CLI๋Š” ํ„ฐ๋ฏธ๋„ ํ™˜๊ฒฝ์—์„œ ์ง์ ‘ Gemini ๋ชจ๋ธ๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์ง„…

3์ฃผ ago

๊ณผ์ ํ•ฉ (overfitting)

๊ณผ์ ํ•ฉ์€ ๋จธ์‹ ๋Ÿฌ๋‹์—์„œ ํ•™์Šต์šฉ๋ฐ์ดํ„ฐ๋ฅผ ๊ณผํ•˜๊ฒŒ ํ•™์Šตํ•˜์—ฌ, ์‹ค์ œ๋ฐ์ดํ„ฐ๋ฅผ ์˜ˆ์ธกํ•˜์ง€ ๋ชปํ•˜๋Š” ํ˜„์ƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ธ๊ณต์ง€๋Šฅ(AI)์˜ ํ•™์Šต ๋ฐฉ๋ฒ•์€ ์šฐ๋ฆฌ๊ฐ€ ์‹œํ—˜๊ณต๋ถ€๋ฅผ…

1๊ฐœ์›” ago