У меня есть проблема с общим свойством. И какое-то решение для него. Что касается кода ниже, вы можете предложить другое решение?Наследование наложения машинописных текстов и общее свойство
interface IConfig{
property?: number;
}
interface IChildConfig extends IConfig{
otherProperty?: number;
}
class Base<T extends Base<any, IConfig>, U extends IConfig>{
protected _config: U | IConfig = {
property: 10
};
public config(){
return <U>this._config;
}
}
class Child extends Base<Child, IChildConfig>{
protected _config: IChildConfig = {
property: 20,
otherProperty: 10
}
}
let a = new Child(),
b = new Base();
a.config();
b.config();
В примере я устанавливаю тип свойства _config в U | IConfig, чтобы избежать ошибок. Если я удалю компилятор детали «| Config», вы вызовете ошибки. Как я понимаю, тип U должен быть равен или расширить интерфейс IConfig.
Спасибо Lodewijk. Причина, почему мне нужна такая структура, что у разных детей может быть собственное конфигурационное или базовое свойство конфигурации, поэтому в некоторых случаях config может быть расширен, а в других случаях он может быть базовым. – Vayrex