Значения по умолчанию для необязательных параметров в аргументе options

Я хочу передать объект в качестве аргумента для конструктора класса. Некоторые ключи объекта параметров являются необязательными.

Есть ли лучший /более идиоматический способ сделать следующее в машинописи? Благодаря

class Car {
    color: number;
    numberOfWheels: number;

    constructor (options: {color: number, numberOfWheels?: number}) {
        options.numberOfWheels |= 4;

        this.color = options.color;
        this.numberOfWheels = options.numberOfWheels;
    }
}
7 голосов | спросил pistacchio 13 Jpm1000000pmWed, 13 Jan 2016 16:52:53 +030016 2016, 16:52:53

3 ответа


0

Используйте взамен if (options.numberOfWheels === void 0) { options.numberOfWheels = 4; }. (В противном случае 0 или NaN ... также будет 4)

Кроме того, что вы делаете, на самом деле довольно умно, и это лучшее, что вы можете сделать Такие вещи не будут работать:

constructor (options: {color: number, numberOfWheels?: number} = {color: options.color})
ответил CoderPi 13 Jpm1000000pmWed, 13 Jan 2016 16:55:54 +030016 2016, 16:55:54
0

Вы можете использовать деструктуризацию для этого:

class Car {
    color: number;
    numberOfWheels: number;

    constructor ({color, numberOfWheels = 4}: {color: number, numberOfWheels?: number}) {
        this.color = color;
        this.numberOfWheels = numberOfWheels;
    }
}

С другой стороны ...

constructor (options: {color: number, numberOfWheels?: number}) {
    let {color, numberOfWheels = 4} = options;

    this.color = color;
    this.numberOfWheels = numberOfWheels;
}
ответил David Sherret 13 Jpm1000000pmWed, 13 Jan 2016 18:01:49 +030016 2016, 18:01:49
0

Примечание. Этот ответ не является попыткой дать точный ответ на вопрос. Вместо этого, дает простой ответ о необязательном параметре или параметре по умолчанию методу или конструктору, как это работает в Typescript (только для целей документации). Пользователи, которые когда-либо искали простые необязательные значения /значения по умолчанию для параметра, могут найти этот ответ полезным.

Я использую последнюю и стабильную версию Typescript по состоянию на июнь 2017 года с VSCode.

Мы можем получить необязательный параметр и значение по умолчанию, используя приведенный ниже подход.

export class Searcher {
  createLog(message: string = "Default: No Message!") {
     console.log(message);
  }
}

Хорошая справочная ссылка, чтобы узнать о Необязательном и по умолчанию оцененном параметры в TypeScript .

Edit:

Вы можете вызвать вышеуказанный метод, например так.

this.createLog();

Поэтому вам не нужно передавать какое-либо значение параметра " он становится необязательным параметром ".

И если вы не передадите параметр " Значение по умолчанию будет предоставлено в этом месте исполнения "

Следовательно, мы можем получить необязательный параметр и значение параметра по умолчанию, используя вышеуказанный подход.

Надеюсь, это кому-нибудь поможет!

ответил RajeshKdev 13 J0000006Europe/Moscow 2017, 11:20:20

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132