Simply put, the Liskov Substitution Principle (LSP) states that objects of a superclass should be replaceable with objects of its subclasses without breaking the application. As a result, I'm wondering if this is a good example to explain LSP to someone:
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'
})