Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Getters

7/25
Recursos

Aportes 1

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

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);