【发布时间】:2016-06-15 11:02:36
【问题描述】:
我们经常使用简单的函数声明,其中函数接受单个对象或某种类型的对象数组。
简单的声明是:
interface ISomeInterface {
name: string;
}
class SomeClass {
public names: ISomeInterface[] = [];
public addNames(names: ISomeInterface | ISomeInterface[]): void {
names = (!Array.isArray(names)) ? [names] : names;
this.names = this.names.concat(names);
}
}
但是 TypeScript 会抛出“类型不可分配”错误。
有更好的方法吗?显然我们可以有两个独立的函数,但我认为以这种方式处理单个函数和多个函数是相当不错的。
【问题讨论】:
-
Protip:使用 names = [].concat(names) 代替 isArray。在 Chrome 上速度提高 43%。
标签: javascript typescript