Search
🆚

extends와 교차 타입 비교

1. extends와 교차타입의 비슷한 점

extends와 교차타입 모두 타입을 확장하는데에 사용 됨
interface BaseMenuItem { itemName: string | null; itemImageUrl: string | null; itemDiscountAmount: number; stock: number | null; } interface BaseCartItem extends BaseMenuItem { quantity: number; }
TypeScript
복사
type BaseMenuItem = { itemName: string | null; itemImageUrl: string | null; itemDiscountAmount: number; stock: number | null; }; // 유니온 타입과 교차타입을 사용한 새로운 타입은 type 키워드로만 선언 가능 type BaseCartItem = { quantity: number; } & BaseMenuItem;
TypeScript
복사

2. extends와 교차타입의 차이점

그러나 일부 케이스에서 동작의 차이가 있음
interface DeliveryTip { tip: number } interface Filter extends DeliveryTip { tip: string // Interface 'Filter' incorrectly extends interface 'DeliveryTip'. // Types of property 'tip' are incompatible. // Type 'string' is not assignable to type 'number'.(2430) } // 오류 발생
TypeScript
복사
type DeliveryTip = { tip: number } type Filter = DeliveryTip & { // 새롭게 추가되는 속성에 대해 미리 알 수 없기 때문에 선언 시 에러가 발생하지 않는다 tip: string } // tip은 never 타입이 됨
TypeScript
복사