Конструктор класса TypeScript с именованными параметрами по умолчанию с использованием деконструкции - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь создать класс 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 раза!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...