Ir al contenido

L — Liskov Substitution Principle

“Las clases derivadas deben poder sustituirse por sus clases base sin que el programa falle.”

Si tu código espera un Pato y le pasas un PatoDeGoma, no puede lanzar error cuando le pidan volar().

class Rectangulo {
constructor(public alto: number, public ancho: number) {}
}
class Cuadrado extends Rectangulo {
// Si sobreescribes para que alto = ancho siempre,
// ROMES el comportamiento esperado de Rectangulo
}
interface FiguraGeometrica {
area(): number;
}
class Rectangulo implements FiguraGeometrica {
constructor(private alto: number, private ancho: number) {}
area() { return this.alto * this.ancho; }
}
class Cuadrado implements FiguraGeometrica {
constructor(private lado: number) {}
area() { return this.lado * this.lado; }
}

En TypeScript moderno, favorece la composición sobre la herencia.