如何在打字稿中向`...args`添加类型
How to add types to `...args` in typescript
我有这样的功能
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!
}
有什么建议吗?
您可以为 ...args
传播参数设置您想要的任何类型,但 它必须是一些东西的数组
即
function foobar(...args: string[]): any {
....
}
在你的情况下,没有办法为最后一个对象指定特定类型,但你可以做类似
的事情
function foobar(...args: Array<string | IYourCustomType>): any {
....
}
一般来说,通常的做法是将固定参数放在第一位,将可选参数放在最后,所以我将函数重写为
function foobar(obj: IYourCustomType, ...args: string[]): any {
....
}
打字稿输入元组的能力已经有了改进。您现在可以唯一地键入每个元素。资料来源:https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-0.html
function getSomething(tuple: [string, boolean]): any => { ... }
我有这样的功能
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!
}
有什么建议吗?
您可以为 ...args
传播参数设置您想要的任何类型,但 它必须是一些东西的数组
即
function foobar(...args: string[]): any {
....
}
在你的情况下,没有办法为最后一个对象指定特定类型,但你可以做类似
的事情function foobar(...args: Array<string | IYourCustomType>): any {
....
}
一般来说,通常的做法是将固定参数放在第一位,将可选参数放在最后,所以我将函数重写为
function foobar(obj: IYourCustomType, ...args: string[]): any {
....
}
打字稿输入元组的能力已经有了改进。您现在可以唯一地键入每个元素。资料来源:https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-0.html
function getSomething(tuple: [string, boolean]): any => { ... }