Labb – Organisera kod med namnområden
I den här labbuppgiften ska du prova olika sätt att organisera koden med hjälp av TypeScript.
Övning 1
TypeScript-koden i projektet innehåller två gränssnitt: Loan
och ConventionalLoan
. Den innehåller också tre funktioner:
calculateInterestOnlyLoanPayment
, som beräknar betalningen för ett räntelån.calculateConventionalLoanPayment
, som beräknar betalningen för ett konventionellt lån.calculateInterestRate
, en arbetsfunktion som beräknar lånets månatliga räntesats.
Funktionerna calculateInterestOnlyLoanPayment
och calculateConventionalLoanPayment
accepterar principle
och interestRate
parametrar. Skillnaden mellan dem är att calculateConventionalLoanPayment
funktionen accepterar en tredje egenskap, months
som calculateInterestOnlyLoanPayment
funktionen inte gör.
Property | beskrivning |
---|---|
principle |
Lånets huvudbelopp. |
interestRate |
Lånets årliga räntesats. Till exempel anges 5 % som 5. |
months |
Låneperioden som anges i månader. En ränta endast lån inte kräver denna egendom eftersom antalet månader är irrelevant (lånet kommer aldrig att återbetalas när en ränta endast betalning görs varje månad.) |
I den här övningen ska du ordna koden med hjälp av namnområden i en enda TypeScript-fil.
Klona startlagringsplatsen genom att ange följande i kommandotolken.
git clone https://github.com/MicrosoftDocs/mslearn-typescript cd mslearn-typescript/code/module-08/m08-start code .
Öppna filen module08_main.ts TypeScript-redigeraren i startarbetsytan.
Leta upp
TODO Create a the Loans namespace
.Skapa ett nytt namnområde med namnet
Loans
.Flytta gränssnitten
Loan
ochConventionalLoan
tillLoans
namnområdet.Uppdatera gränssnitten
Loan
ochConventionalLoan
så att de visas utanförLoans
namnområdet.namespace Loans { export interface Loan { principle: number, interestRate: number //* Interest rate percentage (eg. 14 is 14%) } export interface ConventionalLoan extends Loan { numberOfMonths: number //* Total number of months } }
Leta upp
TODO Create LoanPrograms namespace
.Skapa ett nytt namnområde med namnet
LoanPrograms
.Flytta de tre funktionerna till
LoanPrograms
namnområdet.namespace LoanPrograms { /* TODO Update the calculateInterestOnlyLoanPayment function. */ function calculateInterestOnlyLoanPayment(loanTerms: Loan): string { let payment: number; payment = loanTerms.principle * calculateInterestRate(loanTerms.interestRate); return 'The interest only loan payment is ' + payment.toFixed(2); } /* TODO Update the calculateConventionalLoanPayment function. */ function calculateConventionalLoanPayment(loanTerms: ConventionalLoan): string { let interest: number = calculateInterestRate(loanTerms.interestRate); let payment: number; payment = loanTerms.principle * interest / (1 - (Math.pow(1/(1 + interest), loanTerms.months))); return 'The conventional loan payment is ' + payment.toFixed(2); } function calculateInterestRate (interestRate: number): number { let interest: number = interestRate / 1200; return interest } }
Leta upp
TODO Update the calculateInterestOnlyLoanPayment function
.calculateInterestOnlyLoanPayment
I funktionen:- Uppdatera referensen
Loan
till gränssnittet så att den innehållerLoans
namnområdet. - Gör funktionen synlig utanför
LoanPrograms
namnområdet.
export function calculateInterestOnlyLoanPayment(loanTerms: Loans.Loan): string { let payment: number; payment = loanTerms.principle * calculateInterestRate(loanTerms.interestRate); return 'The interest only loan payment is ' + payment.toFixed(2); }
- Uppdatera referensen
Leta upp
TODO Update the calculateConventionalLoanPayment function
.calculateConventionalLoanPayment
I funktionen:- Uppdatera referensen
ConventionalLoan
till gränssnittet så att den innehållerLoans
namnområdet. - Gör funktionen synlig utanför
LoanPrograms
namnområdet.
// Calculates the monthly payment of a conventional loan export function calculateConventionalLoanPayment(loanTerms: Loans.ConventionalLoan): string { let interest: number = calculateInterestRate(loanTerms.interestRate); let payment: number; payment = loanTerms.principle * interest / (1 - (Math.pow(1/(1 + interest), loanTerms.months))); return 'The conventional loan payment is ' + payment.toFixed(2); }
- Uppdatera referensen
Leta upp
TODO Update the function calls
. LÄGG TILL DETTA I START- OCH SLUTKODEN.Lägg till namnområdet
LoanPrograms
i namnet på funktionerna.
let interestOnlyPayment = LoanPrograms.calculateInterestOnlyLoanPayment({principle: 30000, interestRate: 5});
let conventionalLoanPayment = LoanPrograms.calculateConventionalLoanPayment({principle: 30000, interestRate: 5, months: 180});
- Spara, kompilera och testa ditt arbete.
Övning 2
I den här övningen ska du ordna om namnrymderna till flera TypeScript-filer.
Fortsätt projektet från övning 1.
Skapa två nya TypeScript-filer på arbetsytan, module08_loans.ts och module08_loan-programs.ts.
Loans
Flytta namnområdet från module08_main.ts till module08_loans.ts.LoanPrograms
Flytta namnområdet från module08_main.ts till module08_loan-programs.ts.Överst i module08_loan-programs.ts lägger du till en
reference
instruktion som beskriver relationen mellan gränssnitten i module08_loans.ts och module08_loan-programs.ts./// <reference path="module08_loans.ts" />
Leta upp
TODO Add reference paths
i module08_main.ts .Lägg till de
reference
instruktioner som beskriver relationen mellan module08_loans.ts, module08_loan-programs.ts och module08_main.ts./// <reference path="module08_loans.ts" /> /// <reference path="module08_loan-programs.ts" />
Kör följande kommando i kommandotolken för att kompilera alla beroende .ts-filer och skapa en enda JavaScript-fil med namnet main.js.
tsc --outFile main.js module08_main.ts
Testa ditt arbete genom att köra filen main.js .
Labblösning
Klona den avslutande lagringsplatsen genom att ange följande i kommandotolken.
git clone https://github.com/MicrosoftDocs/mslearn-typescript
cd mslearn-typescript/code/module-08/m08-end
code .
Öppna varje .ts-fil för att se lösningen på den här labbuppgiften. Mer information om hur du konfigurerar utvecklingsmiljön för att köra lösningen finns i avsnittet Labbkonfiguration ovan.