typescript - Kan du förhindra att en gränssnitts-egenskap vars typ är funktion implementeras som en metod i en klass?
Bakgrund
Givet följande gränssnitt
interface MyInterface<I, O> {
execute: (input: I) => O
}
TS-kompilatorn är då nöjd med någon av följande implementationer av MyInterface:
class MyClass implements MyInterface<string, number> {
execute = (input: string): number => 1;
}
Eller
class MyClass implements MyInterface<string, number> {
execute(input: string): number {
return 1;
}
}
Lekplats
Fråga
På grund av sättet typvarians hanteras i TS - kontra-varianta funktionsargument, men bi-varianta metodargument - är det möjligt att förhindra (genom att generera ett kompilatorfel) att execute implementeras som en metod?