No tienes acceso a esta clase

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

Constructor

6/25
Recursos

Aportes 9

Preguntas 2

Ordenar por:

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

o inicia sesi贸n.

En nuestro caso deberia ser 鈥淏ob the Constructor鈥

Les comparto mis apuntes. 馃槃

Constructor

Es el constructor en el que construimos la instancia y mandamos los par谩metros por defecto por el cual queremos que se inicialice esa instancia a un objeto.

Sintaxis de las propiedades del constructor

TypeScript nos ayuda con las clases.

Sintaxis anterior

class ClassName {
		property1: dataType;
		propertyN: dataType;
		constructor (property1: dataType, propertyN: dataType) {
				this.proterty1 = property1;
				this.protertyN = propertyN;
		}
}

Nueva sintaxis en TypeScript

De esta forma estar铆amos definiendo y asignando las propiedades de una manera corta.

Cabe destacar que debemos de aclarar o ser expl铆citos con el alcance de las propiedades, caso contario no podremos usar esta caracter铆stica de TypeScript adem谩s que no podremos usar esa propiedad a lo largo de la clase, ya que su scope solo se ver谩 limitado al constructor.

class ClassName {
		constructor (
				scope property1: dataType, 
				scope propertyN: dataType
		) {
				statements
		}
}

Valores por defecto

Al tener valores por defecto, al momento de crear una instancia de esa clase ya no es obligatorio pasar ese par谩metro que tiene un valor por defecto.

class ClassName {
		constructor (
				scope property1: dataType = value, 
				scope propertyN: dataType = value
		) {
				statements
		}
}

C贸digo de la clase

type PartOfTheCalendar = 'day' | 'month'| 'year';

export class MyDate {
    // year: number;
    // private month: number;
    // #day: number;

    constructor (
        public year: number = 1993,
        public month: number = 7,
        private day: number = 3
    ) {
        // this.year = year;
        // this.month = month;
        // 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) {
        if (type === 'day') this.day += amount;
        if (type === 'month') this.month += amount;
        if (type === 'year') this. year += amount;
    }

    #addPadding (value: number) {
        if (value < 10) return `0${value}`;
        return `${value}`;
    }
}

const myDate = new MyDate(2020);
const myDate2 = new MyDate(2021);
console.log({myDate});
console.log(myDate.printFormat());

En el constructor debes colocar de forma explicita el tipo de acceso si es p煤blico o privado.

Js solo fue amor de una noche XD, con ts me caso

Constructor

Podemos acortar el constructor de esta forma:

export class MyDate {
  //! aqu铆 s铆 es obligatorio escribir el modificador de acceso
  constructor(
    public year: number = 1998, //* valor por defecto
    public month: number = 1,
    public day: number = 1
  ) {}
}

Injection dependencies en Angular esta fuertemente relacionado con esto, se usa el atajo para no escribir codigo de m谩s.

para obtener la fecha actual como lo hace la api Date() pero mejorando el tema del mes cero podemos hacerlo as铆:

<
constructor(private year: number = new Date().getFullYear(),
    private month: number = new Date().getMonth() +1,
    private day: number = new Date().getDate(),) {};
> 

TS es maravilloso!

En TS todo debe realizarse m谩s expl铆cito. Y es muy bueno!