Avatar ·

Qual é a diferença entre interface e type no TypeScript e quando usar cada um?

Olá a todos! Comecei a estudar TypeScript recentemente e encontrei duas formas de descrever a estrutura de objetos: `interface` e `type`. No começo, pensei que fossem a mesma coisa, mas depois percebi que eles se comportam de maneira diferente em algumas situações. Aqui está um exemplo. Posso escrever assim com `interface`: ```typescript interface User { name: string; age: number; } ``` Ou assim com `type`: ```typescript type User = { name: string; age: number; }; ``` Ambas as opções funcionam da mesma forma quando crio um objeto: ```typescript const user: User = { name: 'Alex', age: 30 }; ``` Mas depois tentei combinar dois tipos. Com `interface`, posso simplesmente escrever uma segunda interface com o mesmo nome, e elas se fundem: ```typescript interface User { email: string; } // Agora User tem name, age e email ``` Já com `type`, recebi um erro: "Duplicate identifier 'User'". Então aprendi sobre `&` (intersection) para tipos, mas isso é outra sintaxe. Também ouvi dizer que `type` pode fazer