Les comparto mis apuntes. 😄
Get
Con get podemos acceder a una propiedad con un alcance privado, podemos obtener los datos de esa propiedad pero no modificarlos o mutarlos.
Lo podemos acceder como si fuese una propiedad más de la instancia.
Por definición, todos los getters tienen que retornar algo.
Sintaxis
class ClassName {
constructor () {
statements
}
get methodName () {
statements
return something;
}
}
Una aclaración
En lo particular, prefiero utilizar el private class fields (#) para poder declarar propiedades privadas, ya que es nativo de JavaScript y además que realmente hace un encapsulamiento de las propiedades al momento de llevar el código a producción. Cabe agregar que con este nos podemos evitar realizar el uso de underscore (_
) y también tener problemas con los nombres de los métodos getters y setters.
La estructura del código depende del proyecto y del equipo, pero esa es forma preferida de emplear lo mejor de ambos mundos, tanto de JavaScript como de TypeScript.
Código de la clase
Código adaptado por mí.
type PartOfTheCalendar = 'day' | 'month'| 'year';
export class MyDate {
#day: number;
constructor (
public year: number = 1993,
public month: number = 7,
day: number = 1
) {
this.#day = day;
}
printFormat (): string {
const { year } = this;
const day = this.#addPadding(this.#day);
const month = this.#addPadding(this.month);
return `${day}/${month}/${year}`;
}
add (amount: number, type: PartOfTheCalendar): void {
if (type === 'day') this.#day += amount;
if (type === 'month') this.month += amount;
if (type === 'year') this. year += amount;
}
#addPadding (value: number): string {
if (value < 10) return `0${value}`;
return `${value}`;
}
get day (): number {
// Code
return this.#day;
}
get isLeapYear (): boolean {
const { year } = this;
if (year % 4 === 0) return false;
if (year % 100 === 0) return true;
return year % 4 === 0;
}
// get myReturn () {
// } // Error:
}
const myDate = new MyDate(2020);
const myDate2 = new MyDate(2000);
const myDate3 = new MyDate(2001);
const myDate4 = new MyDate(2004);
myDate.day;
console.log('My Date:',myDate.day, myDate.isLeapYear);
console.log('My Date 2:',myDate2.day, myDate2.isLeapYear);
console.log('My Date 3:',myDate3.day, myDate3.isLeapYear);
console.log('My Date 4:',myDate4.day, myDate4.isLeapYear);
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?