Duck Typing
대상이 무엇이든 오리처럼 행동하면 오리라고 부르겠다.
객체의 종류가 서로 다르더라도 같은 프로퍼티를 갖고 있다면 같은 타입으로 구별하겠다.
class Duck {
quack = () => console.log('quack! quack!');
}
class Cat {
quack = () => console.log('quack! quack!');
}
const makeDucksQuack = (possibleDuckImposter) => possibleDuckImposter.quack();
const duck = new Duck();
const cat = new Cat();
makeDucksQuack(duck); // quack! quack!
makeDucksQuack(cat); // quack! quack!
makeDucksQuack
함수의 인자인 possibleDucksImposter
에 타입을 지정하여 인자로 들어오는 데이터를 판정하는게 아니라 quack
이라는 메서드를 가지고 있는지를 가지고 판별하겠다는 것이다. quack()
메서드를 가지고 있는지를 가지고 타입을 판정하겠다는 것이다.