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.