"만약 그것이 오리처럼 걷고 오리처럼 꽥꽥거린다면, 그것은 오리다"라는 느슨한 타입 체크의 예로부터 유래
객체가 특정 인터페이스에서 요구하는 모든 속성을 가지고 있으면, 그 객체를 해당 인터페이스의 인스턴스로 간주
interface Person {
name: string;
age: number;
}
interface Cat {
name: string;
age: number;
color: string;
}
function printPerson(person: Person) {
console.log(person.name);
console.log(person.age);
}
const cat: Cat = {
name: "Tom",
age: 3,
color: "black",
};
// Person타입을 넣어야 하는데 cat로 Person에 선언된 멤버가 있으므로 가능
printPerson(cat);