自动从通用函数继承参数

时间:2018-08-30 22:41:49

标签: typescript

假设我有一个包含返回数字的函数的对象:

const obj = {
  foo() { return 1; }
  bar() { return 2; }
  baz(num: number) { return num; }
}

typeof obj应该返回如下内容:

{
   foo: () => number;
   bar: () => number;
   baz: (num: number) => number;
}

现在,我需要构建一个类型过滤器,如果我通过上面的typeof,它应该返回具有相同功能但都返回void的对象类型:

// Passing object type to filter
Filter<typeof obj>      

// Result
{
   foo: () => void;
   bar: () => void;
   baz: (num: number) => void;
}

我能够构建一个返回所有相同功能的对象类型,并返回void

export type Filter<O extends { [key: string]: (...args: any[]) => number }> = {
  [K in keyof O]: (...args: any[]) => void;
}

但是我现在的问题是告诉新类型自动继承参数。现在,参数为any [],并且不进行任何类型检查。

// Not an error, but not desirable
{
   foo: (...args: any[]) => void;
   bar: (...args: any[]) => void;
   baz: (...args: any[]) => void;
}

那么,如何将参数泛型传递给新函数?我非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您正在寻找pending addition to the standard libraryglobal.asax类型别名:

try catch finally