더북(TheBook)

&|가 헷갈릴 수도 있습니다. 앞의 코드를 다음과 같이 바꿔봅시다. & 연산자를 | 연산자로 바꾸었습니다.

type Animal = {
  name: string;
}
type Cat = Animal | {
  meow(): void;
}

type Name = Cat['name'];
// Property 'name' does not exist on type 'Cat'.

| 연산자를 사용하면 Cat 타입은 Animal 타입이거나 { meow(): void } 타입이라는 의미가 됩니다. Cat 타입이 Animal 타입인 경우에는 name 속성이 있지만, Cat 타입이 { meow(): void } 타입인 경우에는 name 속성이 없으므로 에러가 발생합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.