๐ŸŒŸ 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

์š”์–‘์› ์„ ํƒ ์ „ ๋ฐ˜๋“œ์‹œ ํ™•์ธํ•ด์•ผ ํ•  ๊ฒƒ๋“ค, ๋ถ€๋ชจ๋‹˜ ๋งก๊ธฐ๊ธฐ ์ „์— ๋ณด์„ธ์š”

์š”์–‘์› ์„ ํƒ ์ „ ๋ฐ˜๋“œ์‹œ ํ™•์ธํ•ด์•ผ ํ•  ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค. ๊ณต์‹ ํ‰๊ฐ€ ์ž๋ฃŒ ์กฐํšŒ๋ฒ•, ๋ฐฉ๋ฌธ ์‹œ ํ™•์ธ…

3์ผ ago

๊ณต๊ณต๊ธฐ๊ด€ ์ฑ„์šฉ ๋น„๋ฆฌ, ๋‚ด๋ถ€์—์„œ ํ„ฐ์ ธ๋‚˜์˜จ ์ถฉ๊ฒฉ ์ฆ์–ธ

๊ณต๊ณต๊ธฐ๊ด€ ์ฑ„์šฉ ๋น„๋ฆฌ์˜ ์‹คํƒœ์™€ ํ”ผํ•ด ์ง€์›์ž์˜ ๋Œ€์‘๋ฒ•์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฑ„์šฉ ๋น„๋ฆฌ ์‹ ๊ณ  ๋ฐฉ๋ฒ•, ๊ณต์ต์‹ ๊ณ ์ž ๋ณดํ˜ธ์ œ๋„, ์ทจ์ค€์ƒ…

3์ผ ago

์ฃผ์‹ ์†์‹ค ๋‚ฌ์„ ๋•Œ ์„ธ๊ธˆ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•, ์•„๋Š” ์‚ฌ๋žŒ๋งŒ ์”๋‹ˆ๋‹ค

์ฃผ์‹ ์†์‹ค์„ ์„ธ๊ธˆ ์ ˆ์•ฝ์— ํ™œ์šฉํ•˜๋Š” ํ•ฉ๋ฒ•์  ๋ฐฉ๋ฒ•์„ ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค. ํ•ด์™ธ์ฃผ์‹ ์†์ตํ†ต์‚ฐ, ISA ๊ณ„์ขŒ ํ™œ์šฉ, ์—ฐ๊ธˆ๊ณ„์ขŒ ์ ˆ์„ธ๊นŒ์ง€…

3์ผ ago

์Œ์‹ ๋ฐฐ๋‹ฌ ๋Šฆ์œผ๋ฉด ์†Œ๋น„์ž๊ฐ€ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ๋‹ค, ๋ชฐ๋ž๋˜ ๊ถŒ๋ฆฌ

๋ฐฐ๋‹ฌ์ด ์˜ˆ์ƒ ์‹œ๊ฐ„๋ณด๋‹ค ํฌ๊ฒŒ ๋Šฆ์œผ๋ฉด ์ทจ์†Œยทํ™˜๋ถˆ์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐ๋‹ฌ์•ฑ๋ณ„ ์ง€์—ฐ ์ทจ์†Œ ๋ฐฉ๋ฒ•๊ณผ ์ž˜๋ชป ๋ฐฐ๋‹ฌ๋์„…

3์ผ ago

ํœด๋Œ€ํฐ ์š”๊ธˆ์ œ ๋ฐ”๊พธ๋ฉด ์—ฐ ์ˆ˜์‹ญ๋งŒ์› ์ ˆ์•ฝ, ์ง€๊ธˆ ๋‚ด ์š”๊ธˆ์ œ ํ™•์ธํ•˜์„ธ์š”

ํ†ต์‹ ๋น„ ์ ˆ์•ฝ์˜ ํ•ต์‹ฌ์€ ์š”๊ธˆ์ œ ์ตœ์ ํ™”์ž…๋‹ˆ๋‹ค. ๋‚ด ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ๋Ÿ‰ ํ™•์ธ๋ฒ•, ์•Œ๋œฐํฐ ์ „ํ™˜ ๋น„๊ต, ์œ„์•ฝ๊ธˆ ์—†์ด ์š”๊ธˆ์ œ…

3์ผ ago

ํ‡ด์ง๊ธˆ ๋ชป ๋ฐ›์•˜๋‹ค๋ฉด, ์ง€๊ธˆ ๋‹น์žฅ ์ด๋ ‡๊ฒŒ ํ•˜์„ธ์š”

ํ‡ด์ง ํ›„ ํ‡ด์ง๊ธˆ์„ ๋ฐ›์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด ์ฆ‰์‹œ ๋…ธ๋™๋ถ€์— ์‹ ๊ณ ํ•˜์„ธ์š”. ์ง€๊ธ‰ ๊ธฐํ•œ, ์ž๊ฒฉ ์š”๊ฑด, ์‹ ๊ณ  ๋ฐฉ๋ฒ•, ์†Œ์•ก์ฒด๋‹น๊ธˆ…

3์ผ ago