Si tiene un archivo con el mismo nombre que la exportación predeterminada, ¿por qué necesita nombrar esta exportación? No estoy DRY allí.
Tenemos una regla para evitar la exportación anónima predeterminada , pero ¿cómo puedo hacer lo contrario y forzar un error cuando alguien no está usando una exportación anónima?
Si tiene un archivo con el mismo nombre que la exportación predeterminada, ¿por qué necesita nombrar esta exportación?
tu no Es por eso que está vinculando a una regla de linter: no es obligatorio, pero algunos lo consideran "mejor práctica", porque
Asegurarse de que se nombren las exportaciones predeterminadas ayuda a mejorar la grepabilidad del código base al alentar la reutilización del mismo identificador para la exportación predeterminada del módulo en su sitio de declaración y en sus sitios de importación.
Básicamente, la gente piensa que si tienes
export default () => { console.log('Hello'); }las personas son más propensas a hacer
import logHello from 'sayHello'; // file one import greeting from 'sayHello'; // file two import sayHello from 'sayHello'; // file threepero eso si lo haces
const sayHello = () => { console.log('Hello'); } export default sayHellola gente hará más consistentemente
import sayHello from 'sayHello';lo que hace que el código sea más fácil de leer, porque la misma función se llama igual sin importar de dónde la importes.
cuando preguntas
como puedo forzarlo?
Supongo que quiere decir cómo puede obligar al linter a aceptar su exportación predeterminada anónima. Necesitaría deshabilitar en línea la regla:
/* eslint import/no-anonymous-default-export: [2, {"allowArrowFunction": true}] */ export default () => {}o actualice su configuración de eslint para aceptarla en general.
Si realmente desea tener una exportación predeterminada anónima aunque su linter lo impida, puede usar los comentarios para deshabilitar las reglas de eslint . Entonces, para su escenario, // eslint-disable-next-line import/no-anonymous-default-export debería funcionar. O puede modificar la configuración de eslint si desea deshabilitar esa regla en todas partes.
Pero debe leer la justificación para nombrar las exportaciones predeterminadas:
Asegurarse de que se nombren las exportaciones predeterminadas ayuda a mejorar la grepabilidad del código base al alentar la reutilización del mismo identificador para la exportación predeterminada del módulo en su sitio de declaración y en sus sitios de importación.
Para las clases exportadas en particular, otra cosa a considerar es que nombrar la clase exportada establecerá su constructor.name , lo que puede ser útil.
const bar = class Foo {}; (new bar()).constructor.name; // 'Foo'