Skip to content

Instantly share code, notes, and snippets.

@isaacbatst
Created April 5, 2022 22:22
Show Gist options
  • Save isaacbatst/48e6bce19c0e42f86359441e385c51ca to your computer and use it in GitHub Desktop.
Save isaacbatst/48e6bce19c0e42f86359441e385c51ca to your computer and use it in GitHub Desktop.
export default class Person {
public readonly age: number
constructor(
protected readonly _name: string,
protected readonly birthDate: Date
) {
this.age = this.calcAge(birthDate)
// idade só é calculada na construção, então se o birthDate mudar, a idade não será atualizada
// faz sentido caso o birthDate não deva ser mudado também
// se for o caso ele deverá ser readonly também
}
private calcAge(birthDate: Date){
const timeDiff = Math.abs(Date.now() - new Date(birthDate).getTime());
return Number((timeDiff / (1000 * 3600 * 24) / 365.25).toFixed(1));
}
}
const person = new Person('Isaac', new Date('06/02/1998'))
person.age = 1; // Não é possível atribuir a 'age' porque é uma propriedade de somente leitura.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment