Поддерживает ли TypeScript
конструктор копирования (например, для , например, C ++ )?
Если ответ отрицательный (или еще нет), то какова лучшая практика инициализации нашегобазовый класс (который мы расширяем) и копирование из существующего экземпляра (того же типа базового класса)
Текущий код:
в настоящее время наш код использует объявленный вручную метод copy()
наш базовый класс, который требует, чтобы базовый класс уже был инициализирован,
, но наш базовый класс (ShopConfig) может иметь некоторые довольно дорогие операции в своем конструкторе, которые уже выполнены один раз и не потребуются, когдав TypeScript
реализована концепция конструктора копирования.
class ShopConfig {
public apiKey: string;
public products: any;
constructor(apiKey: string = 'trial') {
this.apiKey = apiKey;
//Fetch list of products from local Data-Base
this.products = expensiveDataBaseQuery();
}
protected copy(other: ShopConfig) {
for (const field in other) {
if (other.hasOwnProperty(field)) {
this[field] = other[field];
}
}
}
}
class ShopManager extends ShopConfig {
constructor(config: ShopConfig) {
super();
super.copy(config);
console.log('ShopManager configurations:', config);
}
}