我想知道
infer
在TypeScript中条件类型有效。我注意到的一件事
推断
TypeScript中的类型是,它们被定义为允许一个rest元素跟随另一个rest元件。例如
type A<T> = T extends [...infer X, 0, ...infer Y] ? [X, Y] : never;
type B = A<[1, 2]>; // B = [unknown[], unknown[]]
有趣的是,TypeScript不仅说这个代码是有效的;条件也是
成功
,给了我们
X = unknown[]
和
Y = unknown[]
然而,当我们在这些推断的类型中进行替换时,TypeScript会给我们一个错误:
type C<T> = T extends [...unknown[], 0, ...unknown[]] ? true : false;
// Error: A rest element cannot follow another rest element. (1265)
为什么TypeScript要求您使用
推断
当使用多个rest元素时,为什么它说类型
[1, 2]
包含元素
0
?