Saltar al contenido principal

Classes

Forma abreviada

export class Computadora {
// Solo se utiliza el constructor
  constructor(
    public readonly id: number, // con readonly no se puede modificar
    public nombre: string,
    public precio: number,
    public marca?: string // opcional
  ) {}
}

export const pc = new Computadora(2, "HP", 1000);
pc.id = 20; // no se puede modificar
pc.nombre = "HP Victus"; // si se puede modificar

Forma normal

// definicion de la clase
export class Producto {
  // propiedades
  public id: number;
  public nombre: string;

  // constructor
  // se inicializa y ejecuta cuando se crea una instancia de la clase
  constructor(id: number, nombre: string) {
    console.log("constructor de la clase");
    this.id = id;
    this.nombre = nombre;
  }
}

export const telefono = new Producto(1, "Nokia");

Getters

  • Se utiliza para obtener un valor
  • El valor se puede generar dentro de la clase
export class Telefono {
  constructor(
    public readonly id: number,
    public nombre: string,
    public modelo?: string
  ) {}

  // getter ---------------------------------------------------
  get imageUrl(): string {
    return `https//tienda.com/${this.id}.jpg`;
  }

export const tel = new Telefono(3, "Samsung");
console.log(tel.imageUrl); // getter

Métodos

  • Funciones dentro de la clase
  • Por defecto todas son public
export class Telefono {
  constructor(
    public readonly id: number, // no se puede modificar
    public nombre: string,
    public modelo?: string // opcional
  ) {}

  get imageUrl(): string {
    return `https//tienda.com/${this.id}.jpg`;
  }

  // metodos ------------------------------------------------------
  descuento() {
    console.log("descuento!!!!!!!!!");
    this.calcularImpuestos(); // usar metodo privado
  }

  // solo se puede utilizar dentro de la clase
  private calcularImpuestos() {
    console.log("calcular impuestos!!!!!!!!");
  }
}

export const tel = new Telefono(3, "Samsung");
tel.descuento(); // metodo
//tel.calcularImpuestos(); // metodo privado