Ali*_*Ali 1 overloading typescript
我想定义一个带有字符串或对象的rest参数的函数,签名如下:
public static fn(...messages: string[] | object[]): void;
Run Code Online (Sandbox Code Playgroud)
但是不幸的是,这会导致TS2370编译错误
错误TS2370:rest参数必须是数组类型。
我知道像这样的单一类型的数组string[]还是object[]可以正常工作,但是重载此类函数会带来更大的代价。
无论如何,我可以使上述功能与所需的签名一起使用吗?
是的,您的rest参数可以有多种类型。但是,必须将其声明为单个数组类型:
declare function fn(...messages: (string | object)[]): void;
// or with custom type:
// type MessageType = string | object;
// declare function fn(...messages: MessageType[]): void;
fn('aaa', { });
Run Code Online (Sandbox Code Playgroud)
否则,您将说它可以接受字符串数组或对象数组,但是只能接受1 typed array(字符串和对象的组合使其成为一种类型)。
| 归档时间: |
|
| 查看次数: |
2006 次 |
| 最近记录: |