我可以强制匿名默认导出吗?

T_D*_*MER 3 javascript typescript reactjs eslint eslint-plugin-import

如果您有一个与默认导出名称相同的文件,为什么需要命名此导出?我不在DRY那儿。

我们有一条规则来阻止匿名默认导出,但是当有人使用匿名导出时,我该如何做相反的事情并强制出错呢?

dav*_*ave 5

如果您有一个与默认导出名称相同的文件,为什么需要命名此导出?

你不知道。这就是为什么你要链接到 linter 规则 - 这不是必需的,但被一些人认为是“最佳实践”,因为

确保默认导出被命名有助于通过鼓励在其声明站点和导入站点重复使用模块默认导出的相同标识符来提高代码库的可读取性。

基本上,人们认为如果你有

export default () => { console.log('Hello'); }
Run Code Online (Sandbox Code Playgroud)

人们更有可能这样做

import logHello from 'sayHello'; // file one
import greeting from 'sayHello'; // file two
import sayHello from 'sayHello'; // file three
Run Code Online (Sandbox Code Playgroud)

但如果你这样做

const sayHello = () => {
    console.log('Hello');
}
export default sayHello
Run Code Online (Sandbox Code Playgroud)

人们会更加一致地做

import sayHello from 'sayHello';
Run Code Online (Sandbox Code Playgroud)

这使得代码更容易阅读,因为无论从哪里导入,相同的函数都被称为相同的东西。

当你问

我怎样才能强迫它?

假设你的意思是如何强制 linter 接受你的匿名默认导出?您需要内联禁用该规则:

/* eslint import/no-anonymous-default-export: [2, {"allowArrowFunction": true}] */
export default () => {}
Run Code Online (Sandbox Code Playgroud)

或者更新你的 eslint 配置以接受它。