No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

16 Días
22 Hrs
29 Min
12 Seg

Constructor

6/25
Recursos

Aportes 11

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

En nuestro caso deberia ser “Bob 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

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(),) {};
> 

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.

En TS todo debe realizarse más explícito. Y es muy bueno!

una pregunta: esa asignación resumida, tambien funciona en javascript? porque al momento de compilarlo me salio el código completo en JS ```ts export class MyDate { constructor( private year: number, private month: number, private day: number ){} ``` ```js class MyDate { year; month; day; constructor(year, month, day) { this.year = year; this.month = month; this.day = day; } } ```
Gracias por el video, ahora entiendo mas sobre la funcionalidad del constructor

TS es maravilloso!