我正在尝试编写一个函数,该函数将数组中特定对象的两个键作为参数。密钥如下:
对象数组如下
const obj = [
{
name: "number",
func: (foo: number) => foo,
},
{
name: "string",
func: (foo: string) => foo,
},
{
name: "array",
func: (foo: string[]) => foo,
},
];
Run Code Online (Sandbox Code Playgroud)
这是我的方法
type SingleObject = typeof obj[number];
type Name<T extends SingleObject> = T["name"];
type FuncParams<T extends SingleObject> = Parameters<T["func"]>;
const myFunc = async <T extends SingleObject>(
name: Name<T>,
params: FuncParams<T>
) => {
// Do something
};
Run Code Online (Sandbox Code Playgroud)
我认为当调用myFunc
传递"array"
(例如)作为第一个参数时,它会识别有问题的对象并正确分配另一个键的参数(在这种情况下应该是Parameters<(foo: string[] => …