Avatar ·

TypeScript: qual a diferença entre export default e export e quando usar cada um?

Olá a todos! Comecei recentemente a estudar TypeScript (antes escrevia em JS puro) e fiquei confuso com os exports. Parece que existem duas formas: `export default` e apenas `export`. Mas não entendo quando usar cada uma. Aqui está um exemplo. Tenho um arquivo `user.ts`: ```typescript // user.ts export default class User { constructor(public name: string) {} } export function formatUser(user: User): string { return `User: ${user.name}`; } ``` E em outro arquivo eu importo: ```typescript // app.ts import User from './user'; // assim funciona import { formatUser } from './user'; // assim também funciona ``` Mas vi que alguns escrevem `import * as UserModule from './user'`. E também é possível importar default sem chaves, enquanto os nomeados só com chaves. Por que isso? E a pergunta principal: quando é melhor usar `export default`, e quando `export`? Existem regras ou best practices? Parece que no React frequentemente exportam componentes com `export default`, e utilitários com named exports.