我正在try 通过类型脚本泛型元组将多个类型映射为一个组合类型.我想看到的例子是:
// object 1
const foo = {
user: {
id: 1,
},
};
// object 2
const bar = {
hello: 'goodbye',
};
// later, after some code that combines the above objects into one
const baz = {
user: {
id: 1,
},
hello: 'goodbye',
};
我已经在泛型元组方面取得了一些进展,尽管在我try 创建对象时,TypeScrip语言服务器正确地自动完成,但当我之后try 使用映射的属性时,它会出错:
const foo = {
user: {
id: 1,
},
};
const bar = {
hello: "goodbye",
};
type Test<T extends Record<PropertyKey, any>[]> = (
T[number] extends any ? (k: T[number]) => void : never
) extends (k: infer I) => void
? I
: never;
const test: Test<[typeof foo, typeof bar]> = {
user: {
id: 1
},
hello: "23",
};
console.log(test.user);
^
/* Property 'user' does not exist on type '{ user: { id: number; }; } | { hello: string; }'.
Property 'user' does not exist on type '{ hello: string; }'.ts(2339) */
我声明的类型是传递给它的所有泛型元组的映射,当我从给定的类型创建新对象时,它会正确地自动完成,但当我try 访问这些属性时,它会错误!
这有什么不起作用的原因吗,或者我没有正确地打字?