如何解决为什么 Prettier 在解构赋值之前声明了 `;`?
我的 Angular 组件中有 if
块:
if (desc.length > 0) {
[this.errorMsg] = desc
}
但是,Prettier 不喜欢它并建议将 ;
放在解构赋值的开头:
if (desc.length > 0) {
;[this.errorMsg] = desc
}
我只想知道为什么?我的 ESLint 或 Prettier 配置中是否存在错误?还是有什么原因?
{
"overrides": [
{
"files": ["*.ts"],"parserOptions": {
"project": [
"tsconfig.*?.json","e2e/tsconfig.e2e.json"
],"createDefaultProgram": true
},"extends": [
"plugin:@angular-eslint/recommended",// AirBnB guide style
"airbnb-typescript/base",// Prettier settings
"prettier","plugin:prettier/recommended"
],"rules": {
/**
* Any TypeScript source code (NOT TEMPLATE) related rules you wish to use/reconfigure over and above the
* recommended set provided by the @angular-eslint project would go here.
*/
"@angular-eslint/directive-selector": [
"error",{ "type": "attribute","prefix": "app","style": "camelCase" }
],"@angular-eslint/component-selector": [
"error",{ "type": "element","style": "kebab-case" }
]
}
},// NOTE: WE ARE NOT APPLYING PRETTIER IN THIS OVERRIDE,ONLY @ANGULAR-ESLINT/TEMPLATE
{
"files": ["*.html"],"extends": ["plugin:@angular-eslint/template/recommended"],"rules": {}
},// NOTE: WE ARE NOT APPLYING @ANGULAR-ESLINT/TEMPLATE IN THIS OVERRIDE,ONLY PRETTIER
{
"files": ["*.html"],"excludedFiles": ["*inline-template-*.component.html"],"extends": ["plugin:prettier/recommended"],"rules": {
// NOTE: WE ARE OVERRIDING THE DEFAULT CONfig TO ALWAYS SET THE PARSER TO ANGULAR (SEE BELOW)
"prettier/prettier": ["error",{ "parser": "angular" }]
}
}
]
}
.prettierrc.json:
{
"singleQuote": true,"tabWidth": 2,"printWidth": 120,"semi": false
}
解决方法
已经有了关于这个主题的 bunch of discussion,如果您有兴趣阅读原因
即使不是严格要求,在开头添加分号也更漂亮,因为这样可以更轻松地在文件中移动代码行,而不会意外引入 ASI 问题。 - azz
编辑: Prettier 也解释了为什么 here
但基本上是因为
someCall()
[a] = obj
不一样
someCall();
[a] = obj
但是既然你要求 prettier 去掉分号,那就把它放在开头
someCall()
;[a] = obj
您还可以阅读 standardjs rules about the subject 说
// ✓ ok
;[1,2,3].forEach(bar)
// ✗ avoid
[1,3].forEach(bar)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。