타입 S가 타입 T의 서브타입일때 오브젝트 S는 오브젝트 T로 치환 가능하다.
자식클래스(S)를 부모클래스(T) 타입으로 활용해도 제대로 동작한다.
BlackCat의 인스턴스인 bCat을 Cat type을 인자로 받는 makeCry함수에 넣어도 정상 작동함을 알 수 있다.
이 원칙을 따름으로서 직관적이면서 유지보수가 쉬운 코드를 작성할 수 있다.
class Cat {
speak() {
console.log('meow');
}
}
class BlackCat extends Cat {
speak(): void {
console.log('black meow');
}
}
function makeCry(cat: Cat) {
cat.speak();
}
const cat = new Cat();
makeCry(cat);
const bCat = new BlackCat();
makeCry(bCat);