javascript - La llamada al método de herencia provoca un error del compilador de Typescript
Tengo un problema con el compilador de TypeScript de WebStorm. Tengo las siguientes clases
export class rootData{
id:string
//...
constructor(){
//...
}
insert = ():Promise<any> =>{
//...
}
}
class child extends rootData {
//...
constructor(){
super();
}
insert = ():Promise<any> => {
return super.insert();
}
}
Entonces, al escribir "super", veo todos los métodos públicos de rootData en el intellisense. Pero después de establecer super.insert(), obtengo el siguiente error:
TS2340: Solo los métodos públicos y protegidos de la clase base son accesibles mediante la palabra clave 'super'
Probado en el playground de TS, está funcionando (aunque era una versión simplificada).
Gracias por tu ayuda.
EDITAR: Después de revisar el javascript compilado, la llamada al método super está ahí. Así que el compilador da un error pero compila...
Respuesta #1
Debido a que las llamadas a super se redirigen al prototype, no se puede usar una propiedad y se necesita usar un método, es decir, no se puede usar =()=>.
Código corregido:
export class rootData{
id:string
//...
constructor(){
//...
}
insert():Promise<any>{
//...
}
}
class child extends rootData {
//...
constructor(){
super();
}
insert():Promise<any> {
return super.insert();
}
}
