Typescript 选项参数中可选参数的默认值

Typescript 选项参数中可选参数的默认值,typescript,Typescript,我想传递一个对象作为类构造函数的参数。选项对象的某些键是可选的 有没有更好/更惯用的方法来完成以下打字脚本?谢谢 class Car { color: number; numberOfWheels: number; constructor (options: {color: number, numberOfWheels?: number}) { options.numberOfWheels |= 4; this.color = opti

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

有没有更好/更惯用的方法来完成以下打字脚本?谢谢

class Car {
    color: number;
    numberOfWheels: number;

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

        this.color = options.color;
        this.numberOfWheels = options.numberOfWheels;
    }
}
如果(options.numberOfWheels==void 0){options.numberOfWheels=4;}则改用
。(否则0或NaN…也将是4)

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

constructor (options: {color: number, numberOfWheels?: number} = {color: options.color})
您可以为此使用:

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;
}
注意:此答案并非试图给出问题的确切答案。相反,为方法或构造函数提供了关于可选或默认参数的简单答案,这些参数在Typescript中是如何工作的(仅用于文档目的)。搜索参数的简单可选/默认值的用户可能会发现此答案很有用

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

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

export class Searcher {
  createLog(message: string = "Default: No Message!") {
     console.log(message);
  }
}
很好的参考链接了解

编辑:

您可以像这样调用上面的方法

this.createLog();
因此,您不需要传递任何参数值“它将成为可选参数”

当您不传递参数“时,将在该执行位置提供默认值

因此,我们可以使用上述方法实现参数表的可选参数和默认值

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

我希望这对某人有帮助

为什么这个答案被否决了?请留下一个原因,以便我可以纠正这里的任何误导。你的答案,甚至你的链接不是真正相关的OP问题。您也没有尝试他给出的示例,因为您无法为可选参数提供默认值。不完全是!问题是如何在构造函数中传递对象属性的可选参数/默认值。这个问题在我的搜索中突然出现,但我所寻找的只是带有可选方法的默认参数。因此,在这里发布了这个答案,它可能会帮助那些只想要
一个带有默认值的可选参数的人。我已经回答了你的“你不能为可选参数提供默认值”。查询,请参阅我对这个答案的编辑。我希望这能澄清……;)