Этот код
declare function fn<T, U>(array: T[], predicates: ((arg: T) => U)[]): [T, U];
let a = fn([1, 2, 3], [x => 2, x => 's']);
приводит к этой ошибке:
Аргумент типа для параметра типа «U» не может быть выведен из использования. Рассмотрите возможность явного указания аргументов типа. Аргумент-кандидат типа «число» не является допустимым аргументом типа, потому что он не является супертипом кандидата «строка». функция fn (массив: T [], предикаты: ((arg: T) => U) []): [T, U]
Почему нельзя U
просто предположить, что здесь имеется тип string | number
?