AnyCompiler

Clases y Objects

Una clase agrupa datos (propiedades) con las funciones que operan sobre ellos (métodos) — la misma idea que en JavaScript, pero TypeScript añade modificadores de acceso que controlan desde dónde se puede usar una propiedad o método.

class Dog {
  name: string;
  private age: number;

  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }

  bark(): string {
    return `${this.name} says Woof! (age ${this.age})`;
  }
}

const rex = new Dog("Rex", 3);
console.log(rex.name);
console.log(rex.bark());
Output
Rex
Rex says Woof! (age 3)

public, private, protected, y readonly

  • public es el valor por defecto — accesible desde cualquier lugar, incluso fuera de la clase
  • private solo es accesible desde dentro de la propia clase — rex.age sería un error de compilación fuera de Dog
  • protected es como private, pero también accesible desde subclases
  • readonly se puede combinar con cualquiera de los anteriores, y solo se puede asignar una vez, normalmente en el constructor

Forma abreviada del constructor

Escribir this.name = name para cada propiedad se vuelve repetitivo — TypeScript te permite declarar y asignar una propiedad directamente en la lista de parámetros del constructor.

class Point {
  constructor(public x: number, public y: number) {}

  toString(): string {
    return `(${this.x}, ${this.y})`;
  }
}

const p = new Point(3, 4);
console.log(p.toString());
Output
(3, 4)

Siguiente: generics — escribir una función o tipo que funcione con muchos tipos, sin renunciar a la seguridad de tipos.