如何在typescript中向`... args`添加类型

时间:2017-11-10 08:23:09

标签: typescript typescript-typings

我有这样的功能

function foobar(...args): any {
    ....
}

函数签名相当通用,但它只接受字符串,最后一个X类型的对象(都是可选的)

foobar();
foobar('a');
foobar('a', 'b', 'c');
foobar('a', { ... });
foonbar('a', 'b', { ... }); 

是否可以添加某些类型,例如

function foobar(...args: [...string, X]) {  // this doesn't work!

}

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

您可以为...args点差参数设置任何类型,但它必须是某个数组

function foobar(...args: string[]): any {
    ....
}

在您的情况下,无法为最后一个对象指定某种类型,但您可以执行类似

的操作
function foobar(...args: Array<string | IYourCustomType>): any {
    ....
}

一般来说,通常的做法是先将固定参数和可选参数放在最后,这样我就可以将函数重写为

function foobar(obj: IYourCustomType, ...args: string[]): any {
    ....
}