محاسبه هزینه ها و پس انداز در TypeScript

شما می توانید محاسبات خود را با استفاده از TypeScript ایجاد کنید. کد پایین این صفحه به شما کمک می کند تا تعیین کنید که آیا نصب پنل های خورشیدی در درازمدت ارزان تر است یا پرداخت قبض برق خود را همانطور که هست ادامه دهید.

در اینجا یک تفکیک سطح بالا از نحوه تعیین هزینه های پنل خورشیدی توسط کد ارائه شده است.

بخش 1: نیازهای سیستم و راه اندازی

ابتدا میزان مصرف برق فعلی و قبض های خود را تعریف کنید:

  • هر ماه چقدر برق مصرف می کنید؟ ( monthlyKwhEnergyConsumption Consumption)
  • هزینه آن برق چقدر است؟ ( energyCostPerKwh )

بعد، برنامه های منظومه شمسی خود را وارد کنید:

  • چند تا پنل؟ ( panelsCount )
  • پنل ها چقدر قدرتمند هستند؟ ( panelCapacityWatts )
  • هزینه نصب چقدر است؟ ( installationCostPerWatt )
  • آیا تخفیفی در سیستم وجود دارد؟ ( solarIncentives )

بخش 2: محاسبات

بر اساس مقادیر وارد شده، کد محاسبه می کند:

  • yearlyProductionAcKwh : کل برق سالانه ای که پنل های خورشیدی شما می توانند تولید کنند.
  • totalCostWithSolar : هزینه برق طی سالیان متمادی با پنل های خورشیدی.
  • totalCostWithoutSolar : هزینه برق طی سالیان متمادی بدون پنل های خورشیدی.

بخش 3: نتایج

کد همچنین موارد زیر را به شما می گوید:

  • savings : تفاوت بین هزینه با و بدون پانل های خورشیدی.
  • breakEvenYear : چند سال باقی مانده تا هزینه پنل های خورشیدی برابر با صرفه جویی در مصرف برق باشد.

کد نمونه

// Solar configuration, from buildingInsights.solarPotential.solarPanelConfigs
let panelsCount = 20;
let yearlyEnergyDcKwh = 12000;

// Basic settings
let monthlyAverageEnergyBill: number = 300;
let energyCostPerKwh = 0.31;
let panelCapacityWatts = 400;
let solarIncentives: number = 7000;
let installationCostPerWatt: number = 4.0;
let installationLifeSpan: number = 20;

// Advanced settings
let dcToAcDerate = 0.85;
let efficiencyDepreciationFactor = 0.995;
let costIncreaseFactor = 1.022;
let discountRate = 1.04;

// Solar installation
let installationSizeKw: number = (panelsCount * panelCapacityWatts) / 1000;
let installationCostTotal: number = installationCostPerWatt * installationSizeKw * 1000;

// Energy consumption
let monthlyKwhEnergyConsumption: number = monthlyAverageEnergyBill / energyCostPerKwh;
let yearlyKwhEnergyConsumption: number = monthlyKwhEnergyConsumption * 12;

// Energy produced for installation life span
let initialAcKwhPerYear: number = yearlyEnergyDcKwh * dcToAcDerate;
let yearlyProductionAcKwh: number[] = [...Array(installationLifeSpan).keys()].map(
  (year) => initialAcKwhPerYear * efficiencyDepreciationFactor ** year,
);

// Cost with solar for installation life span
let yearlyUtilityBillEstimates: number[] = yearlyProductionAcKwh.map(
  (yearlyKwhEnergyProduced, year) => {
    const billEnergyKwh = yearlyKwhEnergyConsumption - yearlyKwhEnergyProduced;
    const billEstimate =
      (billEnergyKwh * energyCostPerKwh * costIncreaseFactor ** year) / discountRate ** year;
    return Math.max(billEstimate, 0); // bill cannot be negative
  },
);
let remainingLifetimeUtilityBill: number = yearlyUtilityBillEstimates.reduce((x, y) => x + y, 0);
let totalCostWithSolar: number =
  installationCostTotal + remainingLifetimeUtilityBill - solarIncentives;
console.log(`Cost with solar: $${totalCostWithSolar.toFixed(2)}`);

// Cost without solar for installation life span
let yearlyCostWithoutSolar: number[] = [...Array(installationLifeSpan).keys()].map(
  (year) => (monthlyAverageEnergyBill * 12 * costIncreaseFactor ** year) / discountRate ** year,
);
let totalCostWithoutSolar: number = yearlyCostWithoutSolar.reduce((x, y) => x + y, 0);
console.log(`Cost without solar: $${totalCostWithoutSolar.toFixed(2)}`);

// Savings with solar for installation life span
let savings: number = totalCostWithoutSolar - totalCostWithSolar;
console.log(`Savings: $${savings.toFixed(2)} in ${installationLifeSpan} years`);