Dice que estoy creando una aplicación bancaria que solicita bankAccountRawInput desde un servicio remoto. Luego, la aplicación calcula la cantidad después del interés e instancia una nueva cuenta bancaria de clase a partir de los datos sin procesar.
Interfaz de datos sin procesar
interface bankAccountRawInput { public amount : number; public interestRate : number; }Clase de proveedor de datos
@Injectable() export class bankAccount { public amount : number; public interestRate : number; public amountAfterInterest : number constructor(bankAccountRawInput : bankAccountRawInput) { this.amountAfterInterest = this.amount * (1 + this.interestRate) } }Cuando una vista necesita consumir los datos, hace esto
getBankAccount() { this.bankAccountRawInput = callRemoteService.get(); this.bankAccount = new BankAccount(bankAccountRawInput); }y dice que el usuario puede elegir la tasa de interés, por lo que cada vez que cambia la entrada, vuelvo a crear una nueva clase.
updateBankAccount(newValue) { this.bankAccountRawInput.interestRate = newValue; this.bankAccount = new BankAccount(bankAccountRawInput); }Me preocupa si es una buena idea usar siempre una nueva palabra clave para crear clases y actualizar. ¿Existe un patrón mejor, por ejemplo, al crear un método de actualización en la cuenta bancaria para actualizar los cambios y recalcular el valor?
Necesita cambiar su patrón como se muestra a continuación.
Nota: No necesita usar public . De forma predeterminada, es public . Consulte los inline comments para obtener más información. Debe realizar las imports necesarias dentro de los components .
cuentabancariaRawInput.ts
interface bankAccountRawInput { amount : number; interestRate : number; }cuentabancaria.ts (proveedor)
@Injectable() export class BankAccount implements bankAccountRawInput {//implements interface like this. amount : number; interestRate : number; amountAfterInterest : number constructor() {//no need to inject interface here now this.amountAfterInterest = this.amount * (1 + this.interestRate) } bankMethod() : void { console.log("Hi"); } }página.ts
export class MyPage{ constructor(public bankAccount : BankAccount ){//inject your service here } getBankAccount() { this.bankAccount.bankMethod();//no need to use `new` keyword here.Angular does it on behalf of us when we injected in the constructor. } }