class Básico de classes (acessores e membros estáticos)

Última atualização: 2026-10-22

class Básico de classes (acessores e membros estáticos)

Uma classe agrupa dados e comportamento: campos guardam estado, o construtor inicializa, os métodos definem comportamento. new cria instâncias e this aponta para a atual. O TS adiciona anotações de tipo de campo e verificações de tempo de compilação sobre as classes do JS, de modo que inicializadores ausentes e argumentos errados aparecem enquanto você digita.

GrupoFunções e Classes
TipoSintaxe
Modo strictNão necessário

ℹ️ Info O editor transpila TypeScript para JavaScript e o executa (sem verificação de tipos); veja a Saída de cada exemplo para o resultado da verificação.

📝 Sintaxe

class Book {
  title: string;   // campo: tipo explícito
  author: string;
  copies: number;

  constructor(title: string, author: string, copies = 1) {
    this.title = title;
    this.author = author;
    this.copies = copies;
  }

  describe(): string {
    return `${this.title} - ${this.author}`;
  }
}

const book = new Book("O Problema dos Três Corpos", "Cixin Liu", 3);

⚙️ Parâmetros

constructorConstrutor: executa no new; responsável por inicializar cada campo
describe(): stringMétodo: comportamento que vive no prototype; tipo de retorno anotado explicitamente

Retorno:Métodos recebem tipos de retorno explícitos; o construtor não leva nenhum (ele implicitamente retorna a nova instância).

▶ Exemplo

Edite o código abaixo e clique em Testar para ver o resultado transpilado:

Saída:

O Problema dos Três Corpos - Cixin Liu (3 exemplares)

(Saída de execução após a transpilação; new Book("三体", 123) gera um erro de compilação — o segundo argumento deve ser string)

💡 Observações

ℹ️ Info Campos podem ser inicializados no ponto de declaração (copies: number = 1), eliminando atribuições no construtor; o tipo pode ser inferido do inicializador.
💡 Dica Propriedades de parâmetro são um recurso do TS: constructor(public title: string) declara o parâmetro e cria/inicializa o campo em um passo, equivalente a this.title = title.
⚠️ Atenção Com strictPropertyInitialization ativado, campos nunca atribuídos na declaração ou no construtor geram erro; campos anuláveis levam string | undefined, e os atribuídos depois usam definite assignment (!).
Mais casos em breve.

📚 Tutoriais relacionados

❓ Perguntas frequentes

P Os tipos dos campos podem ser omitidos?
R Sim, quando inicializados na declaração (copies = 1 infere number); uma declaração sem inicialização precisa de anotação, senão fica implicitamente any.
P O construtor tem tipo de retorno?
R Você não escreve e não pode escrever um — ele implicitamente retorna a instância da classe. O TS não permite anotação de tipo de retorno em construtores; o tipo de uma expressão new é sempre a instância da classe.
P E se o this se perder dentro de um callback?
R Use campos com função arrow (say = () => this.x) ou faça bind antes de passar; o TS também suporta um parâmetro this (fn(this: Book)) para garantia em tempo de compilação.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%