类型“ T”不可分配给类型“ T扩展T? T:T'在TypeScript中

时间:2019-02-12 22:13:04

标签: typescript

我在项目中遇到了这个问题,下面是可以重现该问题的最少代码。我想知道这是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;
}

1 个答案:

答案 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 
}
相关问题