Solución
solution.tsTypeScript
const ECONOMY_FLIGHT_RATE = 0.10;
const ECONOMY_RATE_LUGGAGE_FEE = 30;
const BUSINESS_FLIGHT_RATE = 0.25;
const FIRST_FLIGHT_RATE = 0.45;
const MIN_DISTANCE = 100;
const GROUP_DISCOUNT = 5;
const GROUP_DISCOUNT_RATE = 0.10;
type FlightType = "economy" | "business" | "first";
const FLIGHT_RATES: Record<FlightType, number> = {
economy: ECONOMY_FLIGHT_RATE,
business: BUSINESS_FLIGHT_RATE,
first: FIRST_FLIGHT_RATE,
};
export function calculateFlightTicketPrice(passengers: number,type: FlightType,distance: number,hasEquipment: boolean): number {
let TOTAL_PRICE = 0;
if (passengers <= 0) return -1;
if (distance < MIN_DISTANCE) return -1;
TOTAL_PRICE = calculateFlightPrice(
type,
distance,
hasEquipment,
passengers
);
return Math.round(TOTAL_PRICE * 100) / 100;
}
function calculateFlightPrice(flightType: FlightType,distance: number,equipment: boolean,passengers: number) {
let price = distance * FLIGHT_RATES[flightType] * passengers;
if (flightType === "economy" && equipment) {
price += ECONOMY_RATE_LUGGAGE_FEE * passengers;
}
if (passengers >= GROUP_DISCOUNT) {
price *= (1 - GROUP_DISCOUNT_RATE);
}
return price;
}0respuestas