假設我們有一個接受可變數量參數的函數,我相信它被稱爲可變參數函數。帶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參數/空字符串的問題真的很好* –