在此代码中:
insert1(data: iFlower) {
...
return data;
}
insert2(data: iFlower[]) {
...
return data;
}
public insert (data: iFlower | iFlower[]) {
if (data as iFlower) {
return this.insert1(data as iFlower);
}
else if (data as iFlower[]) {
return this.insert2(data as iFlower[]);
}
当我调用insert()
函数时,根据变量data
的类型,我想调用一个方法或另一个方法。但是在这种情况下,如果data
是对象数组(iFlower[]
类型),它仍然会输入insert1
函数...或者更确切地说,即使data
是iFlower
或iFlower[]
类型的,它将调用相同的方法。
我该如何解决? :(
答案 0 :(得分:1)
as
是可用于打字转换类型的打字稿运算符。它在运行时不进行任何检查,因此它是无用的。您的代码基本上是在运行时执行的:
if(data /*as iFlower*/) // data is truthy, enters branch
您可以使用Array.isArray
来确定传递的值是否为数组:
if (Array.isArray(data)) // iFlower[]