๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Frontend Dev/๐Ÿฅ ์ฝ”๋“œ์Šคํ…Œ์ด์ธ  FE ๋ถ€ํŠธ์บ ํ”„

Section4 Unit5 [TypeScript] ๊ธฐ์ดˆ - ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์‹œ์ž‘

๋ฐ˜์‘ํ˜•


Section4 Unit5 [TypeScript] ๊ธฐ์ดˆ - ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์‹œ์ž‘

 

๐Ÿ“Œ Chapter1. TypeScript

• TypeScript๋Š” JavaScript์— ์ •์ ํƒ€์ž… ๊ฒ€์‚ฌ์™€ ํด๋ž˜์Šค ๊ธฐ๋ฐ˜ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ฐœ๋ฐœ๋œ ์–ธ์–ด๋กœ, JavaScript๊ฐ€ ๋ฐœ์ „ํ•˜๋ฉด์„œ ์ƒ๊ธด ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

 

 

VSCode์—์„œ TypeScript ํ™˜๊ฒฝ ์„ค์ •ํ•˜๊ธฐ

๐Ÿ‘พ VSCode์—์„œ TypeScript ํ™˜๊ฒฝ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ• ๋ณธ๊ฒฉ์ ์œผ๋กœ TypeScript ํ•™์Šต์„ ํ•˜๊ธฐ ์œ„ํ•ด VSCode์—์„œ ํ™˜๊ฒฝ ์„ค์ •์„ ํ–ˆ๋‹ค. ๊ณผ์ •์ด ๋งˆ๋ƒฅ ๋‹จ์ˆœํ•œ๊ฑด ์•„๋‹Œ๊ฒƒ ๊ฐ™์•„์„œ ์ •๋ฆฌ๋ฅผ ํ•ด๋‘๊ธฐ๋กœ ํ–ˆ๋‹ค. ํ˜น์‹œ๋‚˜ ๋‹ค์Œ์— ๋‹ค์‹œ ๋ณด

fay-story.com

 ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ํ•™์Šต์„ ์œ„ํ•œ VSCode ํ™˜๊ฒฝ์„ค์ • ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋”ฐ๋กœ ๊ธฐ๋กํ•ด๋‘์—ˆ๋‹ค :)

 

๐Ÿ“Œ Chapter2. TypeScript์˜ ํƒ€์ž…

// string
let name: string = "Lilly";

// number
let age: number = 29; 

// boolean
let isAdult: boolean = true;

// array 1. []
let numberList: number[] = [1, 2, 3];
let week: string[] = ['mon', 'tue', 'wed'];

// array 2. ์ œ๋„ค๋ฆญ ๋ฐฐ์—ด ํƒ€์ž…
let numberList: Array<number> = [1, 2, 3];
let week: Array<string> = ['mon', 'tue', 'wed'];

 TypeScript์˜ ํƒ€์ž…๊ณผ ํ•จ์ˆ˜ ๋“ฑ ํ•™์Šตํ•œ ๋‚ด์šฉ์ด ๋„ˆ๋ฌด ๋ฐฉ๋Œ€ํ•ด์„œ ๋”ฐ๋กœ ์ •๋ฆฌ๋ฅผ ํ•ด์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค.

 ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ธฐ๋กํ•˜๊ธฐ์— ๊ณต๋ถ€ํ• ๊ฒŒ ๋„ˆ๋ฌด ๋งŽ์€ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ...

 

๐Ÿ“Œ Chapter3. TypeScript์˜ ํ•จ์ˆ˜

JavaScript์—์„œ์˜ ํ•จ์ˆ˜์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ธฐ๋ช… ํ•จ์ˆ˜(named function)์™€ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜(arrow funciton) ๋“ฑ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

// naemd function
function add(x: number, y: number):number {
  return x + y
}

// arrow function
let add = (x: number, y: number):number => {
  return x + y;
}

 

๐Ÿ“Œ Chapter4. TypeScript์˜ ์—ฐ์‚ฐ์ž ํ™œ์šฉ ํƒ€์ž…

TypeScript๋Š” ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•ด ํƒ€์ž…์„ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. JavaScript์—์„œ๋„ ๋ณด์•˜๋˜ ||(OR) ์—ฐ์‚ฐ์ž๋‚˜ && (AND)์™€ ๊ฐ™์€ ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. | ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•œ ํƒ€์ž…์„ ์œ ๋‹ˆ์˜จ(Union) ํƒ€์ž…์ด๋ผ๊ณ  ํ•˜๋ฉฐ, & ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•œ ํƒ€์ž…์€ ์ธํ„ฐ์„น์…˜(Intersection) ํƒ€์ž…์ด๋ผ๊ณ  ํ•œ๋‹ค.

// Union Types

interface Developer {
  name: string;
  skill: string;
}

interface Person {
  name: string;
  age: number;
}

function askSomeone(someone: Developer | Person) {
	console.log(someone.name);
}

 Union ํƒ€์ž…์€ ์—ฌ๋Ÿฌ ํƒ€์ž… ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์œผ๋กœ ์„ธ๋กœ ๋ง‰๋Œ€( | )๋กœ ๊ฐ ํƒ€์ž…์„ ๊ตฌ๋ถ„ํ•œ๋‹ค.

 

 ์œ ๋‹ˆ์˜จ ํƒ€์ž…์ธ ๊ฐ’์ด ์žˆ์œผ๋ฉด, ์œ ๋‹ˆ์˜จ์— ์žˆ๋Š” ๋ชจ๋“  ํƒ€์ž…์— ๊ณตํ†ต์ธ ๋ฉค๋ฒ„๋“ค์—๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ ์˜ํ•ด์•ผ ํ•œ๋‹ค.

 ์‹ค์งˆ์ ์œผ๋กœ askSomenone ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ๋Š” Developer์™€ Person์ด ๊ฐ–๊ณ  ์žˆ๋Š” ๊ณตํ†ต ํ”„๋กœํผํ‹ฐ์ธ name์—๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ณตํ†ต๋˜๊ณ  ๋ณด์žฅ๋œ ํ”„๋กœํผํ‹ฐ๋งŒ ์ œ๊ณตํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋งŒ์•ฝ ๋‚˜๋จธ์ง€ ํ”„๋กœํผํ‹ฐ์—๋„ ์ ‘๊ทผํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ํƒ€์ž… ๊ฐ€๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

// Intersection Types

interface Developer {
  name: string;
  skill: string;
}

interface Person {
  name: string;
  age: number;
}

function askSomeone(someone: Developer & Person) {
  console.log(someone.age);
  console.log(someone.name);
  console.log(someone.skill);
}

 Intersection ํƒ€์ž…์€ ๋‘˜ ์ด์ƒ์˜ ํƒ€์ž…์„ ๊ฒฐํ•ฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ํƒ€์ž…์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ & ๋กœ ํ‘œ๊ธฐํ•œ๋‹ค. ๊ธฐ์กด ํƒ€์ž…์„ ํ•ฉ์ณ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ๊ฐ€์ง„ ๋‹จ์ผ ํƒ€์ž…์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

 ์œ„์˜ ์ฝ”๋“œ๋Š” ์ธํ„ฐ์„น์…˜ ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜์—ฌ Developer์™€ Person์„ ํ•˜๋‚˜์˜ ํƒ€์ž…์œผ๋กœ ๋ฌถ์—ˆ๋‹ค. ๋”ฐ๋ผ์„œ askSomeone ํ•จ์ˆ˜ ๋‚ด์—์„  ์ •์˜๋œ ํ”„๋กœํผํ‹ฐ์— ์ „๋ถ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 ์œ ๋‹ˆ์˜จ ํƒ€์ž…๊ณผ ์ธํ„ฐ์„น์…˜(๊ต์ฐจ) ํƒ€์ž…์— ๋Œ€ํ•ด ์กฐ๊ธˆ ๋” ๊ณต๋ถ€ํ•˜๊ณ  ์ •๋ฆฌํ•ด์„œ ๊ธ€์„ ์˜ฌ๋ ธ๋‹ค. ์œ ๋‹ˆ์˜จ/๊ต์ฐจ ํƒ€์ž… ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฆฌํ„ฐ๋Ÿด ํƒ€์ž…๋„ ํ•จ๊ป˜ ๋‹ค๋ฃจ์—ˆ๋‹ค ๐Ÿ™‚

 

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์œ ๋‹ˆ์˜จ/๊ต์ฐจ ํƒ€์ž…๊ณผ ๋ฆฌํ„ฐ๋Ÿด ํƒ€์ž…

TypeScript์˜ ํƒ€์ž…์€ ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•ด ์กฐํ•ฉํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์†Œ ๋ณต์žกํ•œ ํƒ€์ž…์„ ํ‘œํ˜„ํ•˜๊ณ  ์‹ถ์„ ๋•Œ, ์ง€์ •ํ•œ ์—ฌ๋Ÿฌ ํƒ€์ž…์˜ ํ•ฉ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•˜๋Š” Union ํƒ€์ž…๊ณผ ๊ต์ง‘ํ•ฉ์„ ์˜๋ฏธํ•˜๋Š” Intersection ํƒ€์ž…์„ ์‚ฌ

fay-story.com

 


๐ŸŒ™  ์˜ค๋Š˜์˜ ํšŒ๊ณ 

 ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์œ ๋‹›์— ๋“ค์–ด์™”๋‹ค. ์ด์ „์—๋Š” ๋ง‰๋ง‰ํ•˜๊ฒŒ๋งŒ ๋Š๊ปด์กŒ๋˜ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋งŒ๋‚˜๊ฒŒ ๋˜๋‹ˆ, ์—ด์‹ฌํžˆ ๊ณต๋ถ€ํ•ด๋ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ์˜ค๋žœ๋งŒ์— ์ด๋ก ๋งŒ ๋ณด๋‹ˆ๊นŒ ์กฐ๊ธˆ ์ง€๊ฒน๊ณ , ์ž˜ ์ดํ•ดํ•˜๊ณ  ์žˆ๋Š”์ง€ ์˜๋ฌธ์ด ๋“ค์—ˆ์ง€๋งŒ ๊ทธ๋ž˜๋„ ์˜ค๋Š˜์€ ๋‚˜๋ฆ„ ์žฌ๋ฏธ์žˆ๊ฒŒ ๊ณต๋ถ€๋ฅผ ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๐Ÿ™‚

 ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ด์ „์—๋Š” ์ปค๋ฆฌํ˜๋Ÿผ์— ์—†์—ˆ๋Š”๋ฐ, ์ด๋ฒˆ ๊ธฐ์ˆ˜๋ถ€ํ„ฐ ์ƒ๊ฒผ๋‹ค๊ณ  ๋“ค์—ˆ๋‹ค. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ผญ ๋ฐฐ์šฐ๊ณ  ์‹ถ์—ˆ๋˜ ๋‚˜๋กœ์จ๋Š” ๋„ˆ๋ฌด ์ž˜๋œ ์ผ์ด์—ˆ์ง€๋งŒ, ์ปค๋ฆฌํ˜๋Ÿผ์ƒ 3์ผ์ด๋ผ๋Š” ์งง์€ ์‹œ๊ฐ„๋ฐ–์— ์—†์–ด์„œ ์•„๋งˆ ๊ณผ์ • ๋‚ด์—์„œ ๋งŽ์€ ๊ฑธ ํ•˜์ง€๋Š” ๋ชปํ•  ๊ฒƒ ๊ฐ™๊ณ , ๋”ฐ๋กœ ๋” ๊ณต๋ถ€๋ฅผ ํ•ด์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค. ๋‚จ์€ ์ด๋ฒˆ ์ฃผ๋„ ํ™”์ดํŒ… ๐Ÿ”ฅ

๋ฐ˜์‘ํ˜•