假设我有一个包含返回数字的函数的对象:
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;
}
那么,如何将参数泛型传递给新函数?我非常感谢您的帮助!
答案 0 :(得分:1)
您正在寻找pending addition to the standard library的global.asax
类型别名:
try catch finally