javascript - Anropsmetod för arv utlöser Typescript-kompilatorfel
Jag har ett problem med WebStorm TypeScript-kompilatorn. Jag har följande klasser
export class rootData{
id:string
//...
constructor(){
//...
}
insert = ():Promise<any> =>{
//...
}
}
class child extends rootData {
//...
constructor(){
super();
}
insert = ():Promise<any> => {
return super.insert();
}
}
Så genom att skriva "super" ser jag alla rootData publika metoder i intellisense. Men efter att ha angett super.insert(), får jag följande fel:
TS2340: Endast publika och skyddade metoder i basklassen är åtkomliga via nyckelordet 'super'
Testade i TS-lekplatsen, det fungerar (förenklad version dock).
Tack för din hjälp.
REDIGERA: Efter att ha kontrollerat den kompilerade JavaScript-koden finns anropet till supermetoden där. Så kompilatorn ger ett fel men kompilerar...
Svar #1
Eftersom super-anrop omdirigeras till prototype kan du inte använda en property och behöver använda en method dvs. kan inte använda =()=>.
Fixad kod:
export class rootData{
id:string
//...
constructor(){
//...
}
insert():Promise<any>{
//...
}
}
class child extends rootData {
//...
constructor(){
super();
}
insert():Promise<any> {
return super.insert();
}
}
