Я пытаюсь создать функцию машинописи, которая имеет два параметра типа, где один параметр типа использует другой:машинописи компиляция TS2322 ошибки при присвоении значения универсального типа
interface Wrapper<T> {
value: T;
}
function func<T, W extends Wrapper<T>>(val: T, takesWrapper: (w: W) => void) {
const wrapper: W = { value: val };
takesWrapper(wrapper);
}
func(32, num => { console.log(Math.abs(num.value) + 10); });
машинопись компилятор дает ошибка в строке const wrapper: W = { value: val };
:
test.ts(6,11): error TS2322: Type '{ value: T; }' is not assignable to type 'W'.
Однако, как W
расширяет Wrapper<T>
, присвоенное значение { value: val }
где val
имеет тип T
должен быть действительным.
Почему компилятор TypeScript дает ошибку компиляции в этом случае?