El error TS2515 de TypeScript se reporta cuando una clase concreta (no abstracta) extiende una clase abstracta pero no implementa todos sus miembros abstractos. Los miembros abstractos definen la interfaz que las subclases deben cumplir.
Por qué ocurre
- •A una subclase le falta una implementación de uno o más métodos abstractos.
- •Se agregó un método a la clase abstracta pero aún no se agregó a todas las subclases.
- •Copiar y pegar una definición de clase sin actualizar las implementaciones abstractas.
- •Renombrar un método abstracto sin actualizar la sobreescritura de la subclase.
Ejemplos
Código que causa el error
abstract class Shape {
abstract area(): number;
}
class Circle extends Shape {
// forgot to implement area()
}Error en la terminal
error TS2515: Non-abstract class 'Circle' does not implement inherited abstract member 'area' from class 'Shape'.
Cómo solucionarlo
Implementa todos los métodos abstractos en tu clase concreta. Tu IDE generalmente mostrará qué métodos faltan. Al agregar un nuevo método abstracto a una clase base, TypeScript marcará inmediatamente todas las subclases que necesitan actualizarse.
Código corregido
abstract class Shape {
abstract area(): number;
}
class Circle extends Shape {
constructor(private radius: number) {
super();
}
area(): number {
return Math.PI * this.radius ** 2;
}
}Errores relacionados
¿Listo para practicar tu inglés en el trabajo?
Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.
Prueba Lingua-e gratis