Laboratorio: Exportación e importación de componentes de módulo
En este laboratorio, se organizará algo de código TypeScript mediante módulos. Como desafío adicional, importará una biblioteca de tipos externa.
Ejercicio 1
En este ejercicio, organizará el código de un proyecto mediante módulos. El proyecto contiene tres archivos TypeScript:
module07_main.ts: contiene el código principal de la aplicación.
module07_loans.ts: contiene dos interfaces,
Loan
yConventionalLoan
.module07_loan-programs.ts: contiene tres funciones:
calculateInterestOnlyLoanPayment
, que calcula el pago de un préstamo de interés solamente.calculateConventionalLoanPayment
, que calcula el pago de un préstamo convencional.calculateInterestRate
, una función de trabajo que calcula el tipo de interés mensual del préstamo.
Las funciones calculateInterestOnlyLoanPayment
y calculateConventionalLoanPayment
aceptan los parámetros principle
y interestRate
. La diferencia entre ellos es que la función calculateConventionalLoanPayment
acepta una tercera propiedad, months
, que la función calculateInterestOnlyLoanPayment
no acepta.
Propiedad | Descripción |
---|---|
principle |
Importe principal del préstamo. |
interestRate |
Tipo de interés anual del préstamo. Por ejemplo, el 5 % se especifica como 5. |
months |
Plazo del préstamo, especificado en meses. Un préstamo de interés solamente no requiere esta propiedad porque el número de meses es irrelevante (el préstamo nunca se reembolsará cuando se realice un pago de interés solamente cada mes). |
Agregue el código necesario para definir las relaciones entre los módulos.
Escriba lo siguiente en el símbolo del sistema para clonar el repositorio de inicio.
git clone https://github.com/MicrosoftDocs/mslearn-typescript cd mslearn-typescript/code/module-07/m07-start code .
Abra el archivo module07_loans.ts y agregue la palabra clave
export
en las declaraciones de la interfaz.export interface Loan { principle: number, interestRate: number //* Interest rate percentage (eg. 14 is 14%) } export interface ConventionalLoan extends Loan { months: number //* Total number of months }
Abra el archivo module07_loan-programs.ts.
En la parte superior del archivo, agregue una instrucción
import
que importe las interfacesLoan
yConventionalLoan
desde module07_loans.ts. Importe ambas interfaces mediante una instrucciónimport
y asígnelas a una variable denominadaLoans
.import * as Loans from './module07_loans.js';
Busque
TODO Update the calculateInterestOnlyLoanPayment function
.Agregue la palabra clave
export
a la declaración de funcióncalculateInterestOnlyLoanPayment
.Actualice el tipo del parámetro de función
loanTerms
a la interfazLoans.Loan
.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); }
Busque
TODO Update the calculateConventionalLoanPayment function
.Agregue la palabra clave
export
a la declaración de funcióncalculateConventionalLoanPayment
.Actualice el tipo del parámetro de función
loanTerms
a la interfazLoans.ConventionalLoan
.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); }
Abra el archivo module07_main.ts.
Busque
TODO Add the import statement
.Agregue una instrucción
import
que importe las funcionesinterestOnlyLoan
yconventionalLoan
desde module07_loan-programs.ts. Asigne las funciones a una variable denominadaLoanPrograms
.import * as LoanPrograms from './module07_loan-programs.js';
Busque
TODO Update the function calls
.En las dos declaraciones de variables, actualice las llamadas de función para hacer referencia a la variable
LoanPrograms
de la instrucciónimport
.let interestOnlyPayment = LoanPrograms.calculateInterestOnlyLoanPayment({principle: 30000, interestRate: 5}); let conventionalLoanPayment = LoanPrograms.calculateConventionalLoanPayment({principle: 30000, interestRate: 5, months: 180});
Guarde los archivos.
En el símbolo del sistema, ejecute el comando
tsc
con la opción--module commonjs
para compilar module07_main.ts.tsc --module commonjs module07_main.ts
Pruebe su trabajo en
node
mediante la ejecución del archivo module07_main.js.
Desafío
Seleccione una biblioteca de JavaScript con la que esté familiarizado e intente importarla a un archivo TypeScript mediante la instrucción import
. Una vez importada, debe funcionar exactamente igual que en JavaScript.
Solución del laboratorio
Para ver la versión final del código, escriba lo siguiente en el símbolo del sistema.
cd ../m07-end
code .
Abra los archivos module07_main.ts, module07_loans.ts y module07_loan-programs.ts para ver la solución a este laboratorio. Vea la sección Configuración del laboratorio más arriba para obtener más información sobre cómo configurar el entorno de desarrollo a fin de ejecutar la solución.