【发布时间】:2020-05-04 05:03:12
【问题描述】:
我在一个项目中有一个 javascript 类,我想将其转换为 typescript:
class PricePlan {
constructor(name, supplier, unitRate, peakTimeMultipliers) {
this.name = name
this.supplier = supplier
this.unitRate = unitRate
this.peakTimeMultipliers = peakTimeMultipliers
}
getPrice(dateTime) {
let peakMultiplier = this.peakTimeMultipliers.find(multiplier => {
return multiplier.day === dateTime.getDay()
});
return peakMultiplier ? peakMultiplier.multiplier : this.unitRate;
}
}
PricePlan.DayOfWeek = Object.freeze({
Sunday:0,
Monday:1,
Tuesday:2,
Wednesday:3,
Thursday:4,
Friday:5,
Saturday:6
})
PricePlan.PeakTimeMultiplier = class {
constructor(dayOfWeek, multiplier) {
this.day = dayOfWeek
this.multiplier = multiplier
}
}
module.exports = PricePlan
我已将该类更改为这样的打字稿类:
export class PricePlan {
private name;
private supplier;
private unitRate;
private peakTimeMultipliers
constructor(name, supplier, unitRate, peakTimeMultipliers = false) {
this.name = name
this.supplier = supplier
this.unitRate = unitRate
this.peakTimeMultipliers = peakTimeMultipliers
}
getPrice(dateTime) {
let peakMultiplier = this.peakTimeMultipliers.find(multiplier => {
return multiplier.day === dateTime.getDay()
});
return peakMultiplier ? peakMultiplier.multiplier : this.unitRate;
}
DayOfWeek = {
Sunday: 0,
Monday: 1,
Tuesday: 2,
Wednesday: 3,
Thursday: 4,
Friday: 5,
Saturday: 6
}
PeakTimeMultiplier = class {
private day
private multiplier
constructor(dayOfWeek, multiplier) {
this.day = dayOfWeek
this.multiplier = multiplier
}
}
}
现在没有编译器错误,但该类在测试中被这样调用:
let peakTimeMultiplier = new PricePlan.PeakTimeMultiplier(PricePlan.DayOfWeek.Wednesday, 10)
这里有两个错误:
- “typeof PricePlan”类型上不存在属性“PeakTimeMultiplier”
- “typeof PricePlan”类型上不存在属性“DayOfWeek”
这些是我在类中移动的属性。如何让它们可见?
【问题讨论】:
-
它们必须是静态的。
标签: typescript