๐Ÿ“Œย ์—ฌ๋Ÿฌ ํƒ€์ž…์„ ํ•ฉ์ณ์„œ ์‚ฌ์šฉํ•œ๋‹ค.

union types๊ฐ€ ์—ฐ์‚ฐ์ž or์˜ ์˜๋ฏธ์˜€๋‹ค๋ฉด, intersection types๋Š” and์˜ ์˜๋ฏธ๋ฅผ ๊ฐ–๋Š”๋‹ค.

โœ๏ธย ์ ์šฉํ•˜๊ธฐ

interface Car {
  name: string;
  start(): void;
}
interface Toy {
  name: string;
  color: string;
  price: number;
}
โŒ
const toyCar: Toy & Car = {
  name: "ํƒ€์š”",
  start() {},
}

Type ย { name: string; start(): void; }ย  is not assignable to type ย Toy & Carย  Type ย { name: string; start(): void; }ย  is missing the following properties from type ย Toyย : ย color, price

Toy & Car๋ผ๋Š” ๊ต์ฐจํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด,

Toy์™€ Car๋ผ๋Š” interface์— ์ •์˜๋˜์–ด ์žˆ๋Š” ๋ชจ๋“  type๋“ค์„ ์ ์–ด์•ผํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ์œ„์˜ type ์—๋Ÿฌ๋Š” Toy๋ผ๋Š” interface์— ์žˆ๋Š” color์™€ price์— ๋Œ€ํ•œ ์ •์˜๊ฐ€ ๋น ์กŒ๋‹ค๋Š” ๋ฌธ๊ตฌ์ด๋‹ค.

โญ•๏ธ
const toyCar: Toy & Car = {
  name: "ํƒ€์š”",
  start() {},
  color: "blue",
  price: 1000,
}

name์€ ๊ณตํ†ต์œผ๋กœ ์ •์˜๋œ type์ด๋ฏ€๋กœ ํ•œ๋ฒˆ๋งŒ ์ •์˜ํ•ด๋„ ๋œ๋‹ค.