我想传递一个对象作为类的构造函数的参数。选项对象的某些键是可选的。
是否有更好/更惯用的方式来完成打字稿中的以下内容?感谢
class Car {
color: number;
numberOfWheels: number;
constructor (options: {color: number, numberOfWheels?: number}) {
options.numberOfWheels |= 4;
this.color = options.color;
this.numberOfWheels = options.numberOfWheels;
}
}
答案 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;
因此我们可以通过上述方法实现参数的可选参数和默认值。
我希望这对某人有帮助!