我如何处理Typescript中的可选参数?
我有以下型号:
export class PowerPlant {
id: number;
orgName: string;
minPower: number;
maxPower: number;
powerPlantType: string;
rampRateInSeconds: number;
rampPowerInKw: number;
}
在这个模型中,最后两个字段,即rampRateInSeconds和rampPowerInKw将是可选值,并且将取决于powerPlantType字符串。我希望能够在构造函数和构造函数中实例化它,我将检查powerPlantType字符串,如果它是某种类型,我想设置这2个额外的字段。
来自函数编程背景,我会在powerPlantType字符串上将这两种类型作为可选和模式匹配,并相应地设置2个值。我怎样才能在Typescript中达到同样的效果?
答案 0 :(得分:1)
如果您没有方法,接口就足够了,您可以将对象文字分配给接口类型的变量,则不需要类。接口可以有可选参数,因此您不需要指定所有成员:
interface PowerPlant {
id: number;
orgName?: string;
minPower?: number;
maxPower?: number;
powerPlantType?: string;
rampRateInSeconds?: number;
rampPowerInKw?: number;
}
var x : PowerPlant = {
id: 10
}
如果你想要一些感觉更像模式匹配的东西,你可以使用有区别的联合类型和类型守卫:
interface Square {
kind: "square";
size: number;
}
interface Rectangle {
kind: "rectangle";
width: number;
height: number;
}
interface Circle {
kind: "circle";
radius: number;
}
type Shape = Square | Rectangle | Circle;
function test1(s: Shape) {
if (s.kind === "square") {
s; // Square
}
else {
s; // Rectangle | Circle
}
}
的上一个例子