【发布时间】:2019-12-17 08:48:03
【问题描述】:
我有许多扩展接口的类。这些类可以具有包含彼此对象的数组。例如:一所学校可以包含许多学生,但两者都实现相同的接口。
我为此创建了一个通用函数,而不是每次都使用 forEach 循环并将它们推送到数组中。这个新的通用函数应该用一行代码就可以完成。
export class School implements MyInterface {
public studens: Student[] = [];
public constructor(data_from_backend) {
this.students = mapDataToModelArrayFunction<Student>(data_from_backend.students);
}
}
export class Student implements MyInterface {
public name: string;
public constructor(data_from_backend) {
this.name = data_from_backend.name;
}
}
export function mapDataToModelArrayFunction<T>(array): T[] {
const listToReturn: T[] = [];
if (Array.isArray(array)) {
array.forEach(item => {
listToReturn.push(new T(obj));
});
}
return listToReturn;
}
但是 TypeScript/Angular 因为 T 给我一个错误。我不允许创建 T 的实例。那我该怎么做呢?
【问题讨论】:
标签: angular typescript generics interface