ExpertiDict

TypeScript · Essencial · Português · Técnico

tipagem estrutural

/tʃiˈpaʒẽj istɾutuˈɾaw/substantivo feminino

Regra segundo a qual a compatibilidade entre tipos depende só da forma, ou seja, das propriedades que o valor tem, e não do nome do tipo declarado.

Onde usar

Explica por que você pode passar qualquer objeto com os campos certos para uma função, sem declarar que ele implementa a interface. É também a razão de dois tipos com nomes diferentes e a mesma forma serem intercambiáveis.

Em código

interface Nomeado { nome: string }
function oi(x: Nomeado) {
  return 'oi ' + x.nome;
}
const gato = { nome: 'Mia', idade: 3 };
oi(gato); // ok: tem nome: string

Exemplos

Pela tipagem estrutural, qualquer objeto com nome e id serve aqui.

Os dois tipos têm a mesma forma, então a tipagem estrutural trata como iguais.

Cuidado

Não confunda com a tipagem nominal de Java ou C#. Para distinguir tipos de mesma forma, como IDs de usuário e de pedido, é preciso um branded type.

Sinônimos

structural typing, duck typing estático

Antônimos

tipagem nominal

Veja também

Todos os termos de TypeScript