function combineArrays<T, U>(arr1: T[], arr2: U[]): (T | U)[] {
return [...arr1, ...arr2];
}
// 假设后续有更具体的子类型扩展需求,例如:
class Animal {}
class Dog extends Animal {}
class Cat extends Animal {}
const animals: Animal[] = [];
const dogs: Dog[] = [];
const cats: Cat[] = [];
// 使用时,通过类型约束确保兼容性
const allAnimals: Animal[] = combineArrays(animals, dogs) as Animal[];
const allPets: Animal[] = combineArrays(dogs, cats) as Animal[];
- 函数实现:
- 使用泛型
T
和 U
分别代表两个输入数组的元素类型。
- 函数
combineArrays
通过展开运算符 ...
将两个数组合并为一个新数组并返回,新数组的类型为 (T | U)[]
,表示包含 T
类型和 U
类型元素的数组。
- 类型兼容性处理:
- 假设存在父类
Animal
以及子类 Dog
和 Cat
。
- 当调用
combineArrays
时,如果后续代码需要将结果作为 Animal
类型处理,可以通过类型断言 as Animal[]
来确保静态类型检查时的类型兼容性,避免运行时错误。这样做能告诉编译器,合并后的数组元素类型可以安全地当作 Animal
类型处理,即使它们实际可能是 Animal
的子类型。