处理Typescript中的可选参数
问题描述:
如何处理Typescript中的可选参数?处理Typescript中的可选参数
我有以下型号:
export class PowerPlant {
id: number;
orgName: string;
minPower: number;
maxPower: number;
powerPlantType: string;
rampRateInSeconds: number;
rampPowerInKw: number;
}
在这个模型中,最后两个字段即rampRateInSeconds和rampPowerInKw将是可选的值,并会在那里取决于powerPlantType字符串。我希望能够在构造函数和构造函数中实例化这个,我将检查powerPlantType字符串,如果它是某种类型的,我想设置这两个额外的字段。
从函数式编程的背景来看,我将这两种类型设置为powerPlantType字符串中的可选和模式匹配,并相应地设置2个值。在Typescript中我怎么能达到同样的效果?
答
如果您没有方法,接口就足够了,并且可以将对象文字分配给接口类型的变量,那么不需要类。接口可以有可选参数,所以你不必指定所有成员:
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
}
}
上一个例子从here
'我希望能够在构造函数和构造函数中实例化这个' Igor
你到底在干什么?例如,很容易找到如何定义可选参数。 – jonrsharpe
可能的重复:[如何在TypeScript中传递可选参数,同时忽略其他一些可选参数?](https://*.com/a/30734778/1260204)。您可以为构造函数使用相同的模式。 – Igor