더북(TheBook)

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;

MoneyLiter 인터페이스는 numberamount 속성과 stringunit 속성을 갖고 있습니다. 인터페이스 이름을 제외하고는 다른 점이 없는 것이죠. 타입스크립트는 둘을 동일한 타입으로 인식합니다. 객체를 어떻게 만들었든 간에 구조가 같으면 같은 객체로 인식하는 것을 구조적 타이핑(structural typing)이라고 부릅니다.

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