如何在打字稿中分配通用条件推断类型的值?

时间:2019-11-07 11:59:20

标签: typescript generics

我尝试使这些条件推断类型起作用:

type A<T> = T extends { a: infer U } ? U : never
type B<T> = T extends { a: infer U } ? U : never

class Test<K extends { a: string }> {
  constructor(props: string) {
    // Error: string is not assignable to A<K>
    let a: A<K> = props
    // Error
    let b: B<K> = props
    // Error: B<K> is not assignable to A<K>
    a = b
  }
}

A<K>B<K>的定义相同,但不能相互分配。 我无法理解A<K>B<K>在编译时都应该是字符串类型,但是不能接受string的值。
有什么办法可以使它起作用?

1 个答案:

答案 0 :(得分:0)

正如@jcalz所说,TS3.7对其进行了修复。