Cursos / Redes de Computadores / Programação Orientada a Objetos / Aula
class ContaBancaria{
@validacao()
public _saldo: number;
constructor(saldo: number){
this._saldo = saldo
}
public sacar(valor: number){
this._saldo -= valor;
console.log('saque realizado');
}
public get saldo() : number {
return this._saldo;
}
}
function validacao(){
return function(target: any, nomeDaPropriedade: string){
//console.log(`Atributo=> ${nomeDaPropriedade}`)
let val = target[nomeDaPropriedade];
let getter = () => val;
let setter = (value: number) => {
if (value < 0){
throw new Error('Valor negativo....')
}else{
val = value
}
}
Object.defineProperty(target, nomeDaPropriedade,{
get: getter,
set: setter
})
}
}
let conta = new ContaBancaria(100);
try{
conta._saldo = -200
}catch(e){
console.log(e.message);
}finally{
console.log(conta.saldo);
}
conta.sacar(30);
Versão 5.3 - Todos os Direitos reservados