TypeScript · Essencial · Português · Técnico
tipagem estrutural
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: stringExemplos
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