Liskov Substitution Principle
L in [SOLID] - objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program. This is more of an OOP concept where child classes are bound by contract to maintain parent/interface functionality and only extending it. We can achieve this in TypeScript where we actually have some inheritance checks and interfaces.