En pocas palabras, el principio de sustitución de Liskov (LSP) establece que los objetos de una superclase deben ser reemplazables con objetos de sus subclases sin interrumpir la aplicación. Como resultado, me pregunto si este es un buen ejemplo para explicarle LSP a alguien:
const manager = { addEmployee({ name: name, title: title }) { console.log(`added new employee: ${name} ${title}`) } } const regionalManager = { ...manager, fireManager(managerId) { console.log(`fired manager with id ${managerId}`) } } const janitor = { ...manager } regionalManager.addEmployee({ name: 'John', title: 'Developer' }) janitor.addEmployee({ // violates LSP name: 'Thomas', title: 'CEO' })