У меня есть класс javascript в проекте, который я хочу преобразовать в машинописный текст:
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)
Здесь у меня есть две ошибки:
- Свойство 'PeakTimeMultiplier' не существует для типа 'typeof PricePlan'
- Свойство 'DayOfWeek' не существует для типа 'typeof PricePlan'
Это свойства, которые я переместил в класс. Как я могу сделать их видимыми?