TypeScript жалуется на неинициализированное свойство класса, хотя кажется, что оно назначено правильно.
Вот минимальный воспроизводимый пример:
type Config = {
color: string;
}
class Toto {
color: string;
constructor(config: Config) {
this.setConfig(config);
}
setConfig(config: Config) {
this.color = config.color;
}
}
TypeScript игровая площадка
Компилятор подчеркивает определение свойства color
и выдает следующую ошибку:
Свойство 'color' не имеет инициализатора и точно не назначается в конструкторе.
Проблема, по-видимому, связана с использованием метода setConfig
для установки значения color
, поскольку следующий код не вызывает ошибок компилятора:
type Config = {
color: string;
}
class Toto {
color: string;
constructor(config: Config) {
this.color = config.color;
}
}
Эта проблема заключается в том, что я хочу иметь возможность использовать метод setConfig
для установки различных значений свойств класса в течение времени существования экземпляра класса. Я не хочу повторять один и тот же код как в моем конструкторе, так и в методе setConfig
, чтобы обойти проблему с компилятором TS.
Кто-нибудь знает, почему компилятор не видит, что переменная класса правильно настроен в конструкторе?