No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Recursos

Aportes 11

Preguntas 3

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

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

jajaja Pens茅 que era el 煤nico que buscaba en internet algunos algoritmos ya hechos. Lo importante es saber para qu茅 usarlo en nuestras soluciones. (min 7:22).
Like si has hecho lo mismo.

aca cree un get personal, que define el mes con nombre en vez de con numero

  get exampleVarGet() {
        const months = ['january', 'february', 'march', 'april', 'may', 'june', 'jule', 'august', 'september', 'october', 'november', 'december']        
        return months[this.month]
    }

para que pueda llamarse como una variable de la clase

console.log(year1.exampleVarGet)

Getters

Los getters NO pueden ser void.

export class MyDate {
  constructor(
    private _year: number = 1998,
    private _month: number = 1,
    private _day: number = 1
  ) {}

  get day(): number {
    return this._day;
  }

  get isLeapYear(): boolean {
    if (this._year % 400 === 0) return true
    if (this._year % 100 === 0) return false

    return this._year % 4 === 0;
  }
}

const myDate = new MyDate(2024, 1, 1);
console.log(myDate.day)
console.log(myDate.isLeapYear) //* parece una propiedad pero es un m茅todo


Getters: Forma de acceder a variables privadas

// un getter internamente es una funci贸n, pero fuera de clase es un propiedad: no se ejecuta.
||||||||||||||||||||||||||||||||||||||
A 'get' accessor must return a value.
||||||||||||||||||||||||||||||||||||||

Ac谩 el mismo m茅todo pero usando operador ternario:

get isLeapYear(): boolean {
    return (
      (this.year % 400 === 0 || this.year % 100 !== 0) && this.year % 4 == 0
    );
  }

A las variables que est谩n globales o las que est谩n definidas en el constructor se le llaman: Atributos y el est谩ndar o convenci贸n es tenerla con un _. Sin embargo, cuando encapsulamos ese mismo atributo se le llama Propiedad. Solo quer铆a aportar eso por si se confunden no es lo mismo, mayormente los atributos son privados para realizar 鈥渪鈥 cosa en los m茅todos.

para mas info consulta encapsulamiento. getter y setter.
la teoria es necesaria para apropiar mejor el tema

Aqu铆 el algoritmo

get isLeapYear(): boolean{
    if(this.year % 400 === 0) return true;
    if(this.year % 100 === 0) return false;
    return this.year % 4 === 0;
 }

Los getters no pueden recibir parametros
馃
馃
馃

te amo ts