我想理解,我们必须为重载函数的每个参数输入类型'any'。例如:
- 我们必须这样做吗?
protected func(value: number): void;
protected func(value: string): void;
protected func(value: any): void {
//...implementation
}
- 或者我们可以这样做吗?
protected func(value: number): void;
protected func(value: string): void;
protected func(value: number | string): void {
//...implementation
}
如果第二个例子是正确的,那么接下来的问题是:它有更好的方法吗?为什么?
答案 0 :(得分:0)
两者都有效,甚至还有第三种选择:
protected func(value: number): void;
protected func(value: string): void;
protected func(): void {
let obj = arguments[0];
//...implementation
}
(或func(...args: any[])
)
至于什么更好,这取决于你,你的风格和你想要达到的目标 在您给出的示例中,我选择了:
protected func(value: number | string): void { ... }
但是例如这样的事情:
protected func(value1: number, value2: string[], value3: () => void): void;
protected func(value1: { [key: string]: number }, key: string): void;
protected func(): void { ... }
使用arguments
然后提出与前两个匹配的签名更容易。