小编ajm*_*mnz的帖子

TypeScript - 从对象数组中的键获取函数参数

我正在尝试编写一个函数,该函数将数组中特定对象的两个键作为参数。密钥如下:

  • 用于索引特定对象的字符串
  • 一个函数(我需要它的参数类型)

对象数组如下

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[] => …

arrays typescript typescript-generics

5
推荐指数
1
解决办法
57
查看次数

标签 统计

arrays ×1

typescript ×1

typescript-generics ×1