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?