假设我们有一个接受可变数量参数的函数,我相信它被称为可变参数函数。带TypeScript的变量参数 - 强制最后一个参数
事情是这样的:
function foo(){
let args = Array.from(arguments).map(v => whatever);
// do something with args
}
此功能的打字稿接口可能看起来像:
interface IVariadicFn {
(...args: string[]): void,
}
但是我们要说,我们期待一个可变数量的字符串,但最终的参数,我们预计成为回调函数。
所以我们希望有这样的事情:
function variadic(){
let args = Array.from(arguments)
let fn = args.pop();
let $args = args.map(v => whatever);
// do something with args
process.nextTick(function(){
fn(null, $args); // fire the callback, asynchronously
});
}
有声明此功能的打字稿定义的方法吗?
我现在能做的最好的是这样的:
type IVariadicArgs = string | Function;
export interface IBeforeFn {
(...args: IVariadicArgs[]): void;
}
见https://github.com/Microsoft/TypeScri pt/issues/1336 – kemsky
讨论目前似乎已转移到[#5453](https://github.com/Microsoft/TypeScript/issues/5453)。 – Tycho
*这个关于静态检查falsy参数/空字符串的问题真的很好* –