TypeScript · Essencial · Português · Técnico
interface ou type
Escolha recorrente entre declarar um formato com interface ou com type alias. Ambos descrevem objetos, mas só interface funde declarações e só type nomeia uniões, tuplas e condicionais.
Onde usar
Aparece em guias de estilo e code reviews. Uma regra comum é interface para objetos e contratos públicos, e type para uniões e tipos derivados; o importante é o time seguir a mesma regra.
Em código
interface A { x: number }
interface A { y: number } // merge: x e y
type B = { x: number };
// type B = { y: number }; // erro: duplicado
type U = 'a' | 'b'; // só com typeExemplos
Na dúvida entre interface ou type, o guia de estilo manda usar interface para objetos.
Esse caso é interface ou type? Tem união, então tem que ser type.
Cuidado
Para objetos simples os dois servem igual, então brigar por isso é perda de tempo; a diferença real é que interface aceita merging e type aceita uniões e tipos computados.