function testFunction<T>(arg: number): T {
return { testField: arg }
}
interface ITest {
testField: number;
}
const x = testFunction<ITest>(5);
Type '{ testField: number; }' is not assignable to type 'T'.
'T' could be instantiated with an arbitrary type which could be unrelated to '{ testField: number; }'.
T
у которого отсутствуют признаки типа ITest
, о чем и говорит ошибка. Это вы думаете что с помощью аргументов типа конкретизировали возвращаемое функцией значение. То есть вы смотрите как-бы из вне. Но компилятору необходимо сопоставить типы внутри самой функции. Выполняя это он и обнаруживает несоответствие типа { testField: number }
типу T
.