我正在尝试编写一个更好的定义来Object.fromEntries()推断结果对象的实际键和值。我有我认为可行的方法,但显然infer U其范围是我的方法无法找到的U。
interface ObjectConstructor {
fromEntries<
K extends PropertyKey,
V,
A extends ReadonlyArray<readonly [K, V]> = ReadonlyArray<readonly [K, V]>
>(array: A): {
[key in A[number][0]]: A[number extends infer U ? U : never][0] extends key ? A[U][1] : never;
};
}
Run Code Online (Sandbox Code Playgroud)
U无法访问A[U][1]。
找不到名字“U”。
另一个问题是,A[number extends infer U ? U : never][0] extends key似乎总是评估为false。
如何检索与 关联的数组的索引key?我猜测有一些 hacky 类型将数组包装在一个函数中,并检查该函数是否扩展了可以推断索引的东西,但我的最佳尝试没有成功。
type ArrayIdxOf<A extends readonly unknown[], K> =
(((i: …Run Code Online (Sandbox Code Playgroud) typescript ×1