Avatar ·

TypeScript: ¿cuál es la diferencia entre export default y export y cuándo usar cada uno?

¡Hola a todos! Recientemente comencé a estudiar TypeScript (antes escribía en JS puro) y me confundí con los exports. Parece que hay dos formas: `export default` y simplemente `export`. Pero no entiendo cuándo usar cada una. Aquí hay un ejemplo. Tengo un archivo `user.ts`: ```typescript // user.ts export default class User { constructor(public name: string) {} } export function formatUser(user: User): string { return `User: ${user.name}`; } ``` Y en otro archivo importo: ```typescript // app.ts import User from './user'; // así funciona import { formatUser } from './user'; // así también funciona ``` Pero he visto que algunos escriben `import * as UserModule from './user'`. Además, se puede importar default sin llaves, y los nombrados solo con llaves. ¿Por qué es así? Y la pregunta principal: ¿cuándo es mejor usar `export default` y cuándo `export`? ¿Hay alguna regla o best practice? Por ejemplo, en React a menudo se exportan componentes con `export default`, y las utilidades con export nombrado.