2.13.1 구조적 타이핑
타입스크립트에서는 모든 속성이 동일하면 객체 타입의 이름이 다르더라도 동일한 타입으로 취급합니다.
interface Money {
amount: number;
unit: string;
}
interface Liter {
amount: number;
unit: string;
}
const liter: Liter = { amount: 1, unit: 'liter' };
const circle: Money = liter;
Money와 Liter 인터페이스는 number인 amount 속성과 string인 unit 속성을 갖고 있습니다. 인터페이스 이름을 제외하고는 다른 점이 없는 것이죠. 타입스크립트는 둘을 동일한 타입으로 인식합니다. 객체를 어떻게 만들었든 간에 구조가 같으면 같은 객체로 인식하는 것을 구조적 타이핑(structural typing)이라고 부릅니다.