我有接受数组联合的函数参数,例如:(ClassA|ClassB)[]
。
如何从函数ClassA[]
或ClassB[]
返回?
当我尝试返回类型(ClassA|ClassB)[]
时,出现以下错误:
已分配的表达式类型
(ClassA|ClassB)[]
不能分配给类型ClassA[]
。
classA: ClassA[];
classB: ClassB[];
this.classA = this.function(this.classA, classAObject);
this.classB = this.function(this.classB, classBObject);
function(array: (ClassA|ClassB)[], item: ClassA|ClassB): any {
// some code...
return array;
}
答案 0 :(得分:1)
array: ClassA[]|ClassB[]
如果是ClassA数组或ClassB数组,请像这样输入。不是可能是ClassA或ClassB的项目数组
答案 1 :(得分:0)
函数重载可以为您提供所需的类型签名:
class A {
a() {}
}
class B {
b() {}
}
const a = new A();
const b = new B();
const arrayOfA: A[] = [];
const arrayOfB: B[] = [];
function doSomething(array: A[], item: A): A[];
function doSomething(array: B[], item: B): B[];
function doSomething(array: A[] | B[],item: A | B): A[] | B[] {
return array;
}
const resultOfA = doSomething(arrayOfA, a);
const resultOfB = doSomething(arrayOfB, b);
您可以检查resultOfA
的类型分别为A[]
和resultOfB
的类型B[]
。