TypeScript · Senior · Запитання 2 з 75
Чому strictFunctionTypes не діє на метод, оголошений як handle(x: Dog): void?
- ✓Правильна відповідь: Параметри методів (method syntax) перевіряються біваріантно заради сумісності
- 2Методи класів та інтерфейсів узагалі не перевіряються на сумісність
- 3Прапорець діє лише на стрілкові функції, оголошені в класах
Пояснення
Біваріантність методів залишили, щоб багато вбудованих типів (наприклад, Array<T>) лишалися сумісними. Якщо оголосити властивість-функцію handle: (x: Dog) => void, перевірка буде строгою. Тому для колбеків в інтерфейсах часто обирають синтаксис властивості.