箭头函数隐式返回自动用括号括起来

时间:2018-12-10 14:54:16

标签: angular typescript visual-studio-code arrow-functions prettier

我将Visual Studio Code与Prettier结合使用,并且功能如下:

(token: string) => this.token = token

成为:

(token: string) => (this.token = token)

我认为这使它的可读性降低了... 有办法防止这种情况吗?

3 个答案:

答案 0 :(得分:1)

这是由于不归还分配规则所致。参见https://eslint.org/docs/rules/no-return-assign

尽管您可能会想到,但箭头功能等效于

(token: string) => {return this.token = token}

是的,那里有回报,并且由于分配而变得“美化”。

此规则的唯一两个选项是在出现括号时允许或始终不允许。

因此,要解决“可读性问题”,请使用大括号,或尝试禁用规则(不推荐)。

答案 1 :(得分:0)

您可以添加配置文件以进行自定义配置,可以是json,js,yaml等,请参考此链接,这可能会对您有所帮助

https://prettier.io/docs/en/configuration.html

对于 Arrorw函数,如果您使用的是json,则可能必须在.prettierrc文件中使用 “ arrowParens”:“ aviod” 模式以避免自动添加括号。

答案 2 :(得分:0)

An option to fix this will never be added to Prettier.

这是一个解决方案,直到出现一个不太自以为是的代码格式化程序(如果已经存在,请向我指出)。

打开以下文件:

  • Windows %USERPROFILE%\.vscode\extensions\esbenp.prettier-vscode-5.8.0\node_modules\prettier\index.js
  • macOS Linux ~/.vscode/extensions/esbenp.prettier-vscode-5.8.0/node_modules/prettier/index.js

(其中%USERPROFILE%通常是C:\Users\YourUsernameHere\

如果您将来使用的话,您的esbenp.prettier-vscode-X.X.X文件夹可能会看到不同的版本名称。相应地修改路径。

使用Ctrl + F搜索case "AssignmentExpression":(大约出现四到五次),直到到达this little snippet of code。将图示的return true更改为return false。我在41587行上找到了该语句,但是在将来的Prettier版本中这可能会改变,因此请改用Ctrl + F搜索。

保存文件,重新启动VSCode,它就像魔术一样工作。

我发现macOS may get upset with you上的VSCode摆弄了内部结构。弹出窗口中应该有一些设置图标,可以让您选择忽略该错误。选择忽略该错误,然后再次重新启动VSCode,它应该可以正常工作。

注意:如果要在所有情况下都删除赋值表达式换行,请在case语句的大括号后面的图行return false41583之间添加一个41584语句并且在const grandParent = ...语句之前。或将case语句结尾的全部return true更改为return false