32 / 58
Что такое bivariance и почему методы ковариантны?
Бивариантность означает, что параметры функции проверяются и ковариантно, и контравариантно одновременно. Методы в интерфейсах (method(x: T): void) всегда бивариантны, даже с strictFunctionTypes. Это сделано намеренно для совместимости с DOM API и паттерном event handlers, где подтип события передаётся в обработчик базового типа.