考虑一下代码
/* eslint-disable */
type Primitive = boolean | null | number | string;
export type DataAddress<T> = T extends Primitive ? [T] : ObjectAddress<T>;
export type ObjectAddress<T> = {
[K in keyof T]: [K, ...DataAddress<T[K]>];
}[keyof T];
type X = { x: boolean[] }
function f(...args: DataAddress<X>) {
}
f('x1')
/* TS2345: Argument of type ["x1"] is not assignable to parameter of type
["x", ...any[]] | ["x", number, false] | ["x", number, true]
*/
问题是["x", ...any[]]
从哪里来,以及如何修复代码,使这里的类型仅为["x", number, false] | ["x", number, true]
?