Avatar ·

TypeScript: Qual a diferença entre interface e type? Quando usar cada um?

Olá a todos! Comecei a estudar TypeScript e fiquei confuso com a diferença entre `interface` e `type`. Ambos parecem permitir descrever a estrutura de objetos, mas não entendo quando aplicar cada ferramenta. Veja meu código. Estou tentando descrever um usuário e seu endereço: ```typescript // Opção com interface interface IUser { name: string; age: number; address: IAddress; } interface IAddress { city: string; street: string; } // Opção com type type TUser = { name: string; age: number; address: TAddress; } type TAddress = { city: string; street: string; } ``` Ambas as opções funcionam, mas ouvi dizer que existem diferenças fundamentais. Por exemplo, vi que `type` pode fazer algo com unions, enquanto `interface` não. E em alguns projetos usam `interface` para tudo, enquanto em outros usam `type`. Por favor, me expliquem qual é a diferença real? Quais são as boas práticas? Existem situações onde só se pode usar um deles?