Solución
solution.tsTypeScript
export function calculateElectricityBill(kilowatts: number, type: string): number {
const plans={
residential:residential,
commercial:commercial,
industrial:industrial
}
function minimumCharge(charge:number){
const MINIUM_CHARGE=5
if (charge < MINIUM_CHARGE) return MINIUM_CHARGE;
return +charge.toFixed(1)
}
function industrial(kilowatts:number){
let charge=0
const TIER_MAX_KWH=1000
const RATE_TIER=0.12
const FIXED_CHARGE=50
const DISCOUNT=0.85
if (kilowatts > TIER_MAX_KWH) {
charge = kilowatts * RATE_TIER * DISCOUNT + FIXED_CHARGE;
} else {
charge = kilowatts * RATE_TIER + FIXED_CHARGE;
}
return minimumCharge(charge)
}
function commercial(kilowatts:number){
let charge=0
const TIER_MAX_KWH=500
const RATE_TIER_1=0.18
const DISCOUNT=0.90
if (kilowatts > TIER_MAX_KWH) {
charge = kilowatts * RATE_TIER_1 * DISCOUNT;
} else {
charge = kilowatts * RATE_TIER_1;
}
return minimumCharge(charge)
}
function residential(kilowatts:number){
let charge=0
const TIER_1_MAX_KWH=100
const TIER_2_MAX_KWH=300
const RESIDENTIAL_TIER_2_CAPACITY = TIER_1_MAX_KWH -TIER_2_MAX_KWH;
const RATE_TIER_1=0.10
const RATE_TIER_2=0.15
const RATE_TIER_3=0.20
if (kilowatts <= TIER_1_MAX_KWH) {
charge = kilowatts * RATE_TIER_1;
} else if (kilowatts <= TIER_2_MAX_KWH) {
charge = TIER_1_MAX_KWH * RATE_TIER_1 + (kilowatts - TIER_1_MAX_KWH) * RATE_TIER_2;
} else {
charge = TIER_1_MAX_KWH * RATE_TIER_1 + 200 * RATE_TIER_2 + (kilowatts - TIER_2_MAX_KWH) * RATE_TIER_3;
}
return minimumCharge(charge)
}
return plans[type](kilowatts);
}0respuestas