【发布时间】:2020-04-19 15:08:24
【问题描述】:
有没有办法减轻 TypeScript 中可选参数的顺序?我目前正在上课
export default class Area {
private name: string;
private description: string;
private item?: Item;
private hazard?: Hazard;
constructor(name: string, description: string, item?: Item, hazard?: Hazard) {
this.name = name;
this.description = description;
this.item = item;
this.hazard = hazard;
}
}
对于这个 Area 类,我需要 name 和 string 参数,但不需要 item 或 hazard 参数。我尝试通过以下方式实例化一个 Area 对象:
let item = new Item(); // had required parameters, but not important for now
let hazard = new Hazard(); // had required parameters, but not important for now
let area = new Area("test", "test"); // works as expected
let area1 = new Area("test", "test", item); // works as expected
let area2 = new Area("test", "test", hazard); // DOES NOT WORK as expected
let area3 = new Area("test", "test", item, hazard); // works as expected
尽管hazard 和item 是可选的,但如果我想省略item,我需要为第三个参数传入undefined。有没有办法减轻或放弃这种行为,我们可以传入与任何可选参数匹配的第三个参数?
【问题讨论】:
-
不,这在 javascript/typescript 中是不可能的。您可以做的是更改构造函数以接受
{ name: string, description: string, item?: Item, hazard?: Hazard }之类的对象