En nuestro caso deberia ser “Bob the Constructor”
Introducción
¿Ya tomaste el Curso de TypeScript: Tipos Avanzados y Funciones?
Fundamentos de POO
Class
Métodos
Acceso público
Acceso privado
Constructor
Getters
Setters
POO Avanzada
Herencia
Acceso protegido
Static
Interfaces
Clases abstractas
Singleton: constructor privado
Asincronismo y consumo de APIs
Promesas
Tipando respuestas HTTP
Proyecto: migración de funciones a clases
Consumiendo ProductMemoryService
ProductHttpService
Consumiendo ProductHttpService
Genéricos
Generics
Generics en clases
Generics en métodos
Decoradores
Próximos pasos
¿Quieres más cursos de TypeScript?
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
Paga en 4 cuotas sin intereses
Termina en:
Aportes 11
Preguntas 3
En nuestro caso deberia ser “Bob the Constructor”
Les comparto mis apuntes. 😄
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.
TypeScript nos ayuda con las clases.
class ClassName {
property1: dataType;
propertyN: dataType;
constructor (property1: dataType, propertyN: dataType) {
this.proterty1 = property1;
this.protertyN = propertyN;
}
}
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
}
}
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
}
}
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(),) {};
>
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!
TS es maravilloso!
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?