У меня есть класс, подобный
export class Config{
public doSomething: boolean;
public doSomethingOptionally?: boolean
constructor(data: {
doSomething: boolean,
doSomethingOptionally?: boolean
}) {
Object.assign(this, data);
}
}
Передача данных в конструктор действительно очень проста, и IntelliSense достаточно умен, чтобы не позволять разработчикам создавать новый экземпляр класса Config
без указания свойства doSomething
,но это обходится без doSomethingOptionally
.
Все это прекрасно работает, но как только я включаю strictPropertyInitialization
в tsconfig.json
, я получаю кучу ошибок, потому что doSomething
не был инициализирован.
Какой лучший способ для этого?
Я не хочу:
- указывать значения по умолчанию (объекты могут быть очень большими)
- использовать
doSomething: boolean = {} as any;
- присваивать значение в конструкторе за пределами свойства
data
, потому что может быть много параметров, и вызов конструктора станет на мой взгляд слишком уродливым - Make
doSomething
принять неопределенные значения