У меня есть суперкласс, который является родительским (Entity
) для многих подклассов (Customer
, Product
, ProductCategory
...)
Я ищу, чтобы динамически клонировать объект, который содержит разные вспомогательные объекты в Typescript.
В примере: a Customer
, у которого есть другой Product
, у которого есть ProductCategory
var cust:Customer = new Customer ();
cust.name = "someName";
cust.products.push(new Product(someId1));
cust.products.push(new Product(someId2));
Чтобы клонировать все дерево объекта, я создал функцию в Entity
public clone():any {
var cloneObj = new this.constructor();
for (var attribut in this) {
if(typeof this[attribut] === "object"){
cloneObj[attribut] = this.clone();
} else {
cloneObj[attribut] = this[attribut];
}
}
return cloneObj;
}
В new
появляется следующая ошибка, когда она переводится в javascript: error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
Хотя script работает, , я хотел бы избавиться от переполненной ошибки