Я пытаюсь создать класс Entity
для игрового движка, в котором разработчик может иметь доступ к intellisense для допустимых опций, но некоторым из них, которые они пропускают, будут назначены значения по умолчанию. Например, этот код работает:
export interface vector_i {
x: number
y: number
}
export interface entity_opts_i {
position: vector_i
velocity?: vector_i
}
export class Entity {
position: vector_i
velocity: vector_i
constructor({
velocity = {x: 0, y: 0},
}, opts: entity_opts_i) {
this.position = opts.position
this.velocity = velocity
}
}
Обратите внимание, что position
должно быть указано , но velocity
может быть указано , а будет присваивается значение в конструкторе. Я бы сделал Entity
extension entity_opts_i
, но velocity
никогда не будет неопределенным, и я не хочу ставить оператор !
после него везде в классе ...
Is Есть ли способ избавиться от некоторых из этого дублирования? Это так уродливо - печатать каждое свойство 3 или 4 раза!