如果您有一个与默认导出同名的文件,为什么还需要给该导出命名?我在这里没有做到“不重复(DRY)”。
我们有一个规则以防止匿名默认导出,但是当有人未使用匿名导出时,如何执行相反操作并强制出错呢?
我们有一个规则以防止匿名默认导出,但是当有人未使用匿名导出时,如何执行相反操作并强制出错呢?
export default () => { console.log('Hello'); }
人们更有可能去做的事情
import logHello from 'sayHello'; // file one
import greeting from 'sayHello'; // file two
import sayHello from 'sayHello'; // file three
但是如果你这样做
const sayHello = () => {
console.log('Hello');
}
export default sayHello
人们将更加一致地执行
import sayHello from 'sayHello';
/* eslint import/no-anonymous-default-export: [2, {"allowArrowFunction": true}] */
export default () => {}
或者更新你的eslint配置以便通常接受它。
如果你真的想要一个匿名的默认导出,即使你的 linter 阻止了它,你可以使用注释来禁用 eslint 规则。所以,在你的情况下,// eslint-disable-next-line import/no-anonymous-default-export
应该可以工作。或者,如果你想在所有地方禁用该规则,你可以修改 eslint 配置。
但是你应该阅读命名默认导出的理由:
确保默认导出被命名有助于通过鼓励在声明站点和导入站点重复使用相同的标识符来提高代码库的 grepability。
特别是对于导出的类,另一件需要考虑的事情是给导出的类命名将设置它的 constructor.name
,这可能很有用。
const bar = class Foo {};
(new bar()).constructor.name; // 'Foo'
constructor.name
,我之前不知道这个。我们主要使用export default function() {...}
,所以如果有人尝试执行export default function Do() {...}
,我需要强制报错。 - T_DaMER