기존에 존재하는 타입의 모든 멤버 + 새로운 타입
type ProductItem = {
id: number;
name: string;
price: number;
}
type ProductItemDiscount = ProductItem & { discountAmount: number };
A 또는 B 타입을 만족하는 타입
type CardItem = {
id: number;
size: number;
imageUrl: string;
}
type PromotionItem = ProductItem | CardItem;
특정 타입의 속성 이름은 알 수 없으나 속성값의 타입을 알 때
interface IndexSignatureExample01 {
[key: string]: number; // 모든 키는 문자열이어야 하고, 값은 숫자라는 뜻
}
interface IndexSignatureExample02 {
[key: string]: number | boolean;
length: number; // 통과
name: string; // 에러 발생
// 인덱스 시그니처가 "key가 문자열인 경우 값은 반드시 숫자 or 불리언" 이라고 명시했기 때문에.
}