options参数中可选参数的默认值

时间:2016-01-13 13:52:54

标签: typescript

我想传递一个对象作为类的构造函数的参数。选项对象的某些键是可选的。

是否有更好/更惯用的方式来完成打字稿中的以下内容?感谢

class Car {
    color: number;
    numberOfWheels: number;

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

        this.color = options.color;
        this.numberOfWheels = options.numberOfWheels;
    }
}

3 个答案:

答案 0 :(得分:5)

请改用if (options.numberOfWheels === void 0) { options.numberOfWheels = 4; }。 (否则0或NaN ......也将是4)

除此之外,你所做的事实上非常聪明,这是你能做的最好的事情。 这样的事情是行不通的:

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

答案 1 :(得分:3)

您可以使用destructuring

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;
}

答案 2 :(得分:-1)

注意: 这个答案不是尝试给出问题的准确答案。相反,给出方法或构造函数的可选或默认参数的简单答案,如何在Typescript中工作(仅用于文档目的)。搜索参数的简单可选/默认值的用户可能会发现此答案有用。

截至2017年6月,我使用的是最新稳定版本的VSCode。

我们可以使用以下方法实现可选参数和默认值。

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

了解Optional and Default valued parameters in TypeScript的良好参考链接。

<强> 编辑:

您可以像这样调用上述方法。

this.createLog();

因此,您不需要传递任何参数值&#34; 它将成为可选参数 &#34;。

如果您未通过参数&#34; 将在该执行地点提供默认值 &#34;

因此我们可以通过上述方法实现参数的可选参数和默认值。

我希望这对某人有帮助!