AnyCompiler

Classes e Objects

Uma classe agrupa dados (propriedades) com as funções que operam sobre eles (métodos) — a mesma ideia do JavaScript, mas o TypeScript adiciona modificadores de acesso que controlam de onde uma propriedade ou método pode ser usado.

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, e readonly

  • public é o padrão — acessível de qualquer lugar, incluindo fora da classe
  • private só é acessível de dentro da própria classe — rex.age seria um erro de compilação fora de Dog
  • protected é como private, mas também acessível a partir de subclasses
  • readonly pode ser combinado com qualquer um dos anteriores, e só pode ser definido uma vez, geralmente no construtor

Forma abreviada do construtor

Escrever this.name = name para cada propriedade fica repetitivo — o TypeScript permite declarar e atribuir uma propriedade diretamente na lista de parâmetros do construtor.

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)

A seguir: generics — escrever uma função ou tipo que funcione em muitos tipos, sem abrir mão da segurança de tipos.