TypeScript · Senior · Pytanie 2 z 75
Dlaczego strictFunctionTypes nie działa dla metody zadeklarowanej jako handle(x: Dog): void?
- ✓Poprawna odpowiedź: Parametry w składni metody są sprawdzane biwariantnie pod kątem zgodności
- 2Metody klas i interfejsów w ogóle nie są sprawdzane pod kątem zgodności
- 3Flaga dotyczy tylko funkcji strzałkowych zadeklarowanych w klasach
Wyjaśnienie
Biwariantność metod zachowano, by wiele wbudowanych typów (np. Array<T>) pozostało zgodnych. Jeśli zamiast tego zadeklarujesz właściwość-funkcję handle: (x: Dog) => void, sprawdzenie będzie ścisłe. Dlatego dla callbacków w interfejsach często wybiera się składnię właściwości.