我在项目中遇到了这个问题,下面是可以重现该问题的最少代码。我想知道这是TypeScript的错误,还是我使用错误。 (实际代码更复杂,但是错误是相同的)
错误是:Type 'T' is not assignable to type 'T extends T ? T : T'.
我在TypeScript 3.0.3和3.3.1上进行了测试
function test<T>(arg: T) {
let x: T extends T ? T : T;
x = arg;
}
答案 0 :(得分:3)
Typescript不会尝试解析条件类型,因此即使这个看似琐碎的示例也无法分配。我猜您的现实世界示例更加复杂,但同样的想法仍然适用。
只有条件类型相同时才允许分配:
function test<T>(arg: T) {
let x: T extends T ? T : T;
let y: T extends T ? T : T;
x = y; //ok
}