TypeScript · Senior · Frage 2 von 75
Warum gilt strictFunctionTypes nicht für eine als handle(x: Dog): void deklarierte Methode?
- 1Parameter in Methodensyntax werden bivariant auf Kompatibilität geprüft
- 2Das Flag gilt nur für Arrow Functions, die in Klassen deklariert sind
- 3Methoden von Klassen und Interfaces werden gar nicht auf Kompatibilität geprüft
Antwort zeigen
Richtige Antwort: Parameter in Methodensyntax werden bivariant auf Kompatibilität geprüft
Erklärung
Die Bivarianz von Methoden blieb erhalten, damit viele eingebaute Typen (z. B. Array<T>) kompatibel bleiben. Deklariert man stattdessen eine Funktionseigenschaft handle: (x: Dog) => void, ist die Prüfung streng. Deshalb zieht man für Callbacks in Interfaces oft die Eigenschaftssyntax vor.