Typescript declara um método opcional no protótipo da superclasse
Eu tenho o seguinte código:
class Test {
value: any;
getSomething() {
// doSomething doesn't exist on type Test
if (typeof this.doSomething === 'function') {
return this.doSomething(this.value);
}
}
}
class A extends Test {
doSomething(value) {
console.log(value);
}
}
const a = new A();
a.getSomething();
Eu quero que o método doSomething seja opcional. Se subclasses quiserem implementá-lo, poderiam, mas não são obrigadas a isso. Como posso declará-lo na superclasse como indefinido e evitar o erro do TS?
Resposta #1
Você pode declarar o método como opcional na classe Test
class Test {
value: any;
doSomething?(p: any): any;
getSomething() {
// doSomething doesn't exist on type Test
if (typeof this.doSomething === 'function') {
return this.doSomething(this.value);
}
}
}
class A extends Test {
doSomething(value) {
console.log(value);
}
}
const a = new A();
a.getSomething();
Nota Pessoal: você aprende algo novo a cada dia, não fazia ideia de que era possível, mas pensei comigo mesmo qual seria a sintaxe se isso existisse, e eis que funcionou 😂.
