【发布时间】:2017-07-13 14:18:35
【问题描述】:
我在一个 React 项目中启用了 eslint-plugin-flowtype 和 Flow。它运作良好,但并不完美。例如,我有错误 Missing return type annotation. (flowtype/require-return-type) 因缺少返回类型而引发。但是当我写一个未知类型时我没有错误。例如,写入{dispatch: TotoType} 不会引发任何错误(TotoType 未声明)。
为了更清楚:
我的问题是,如果我编写了一个不存在的类型(我的意思是 nomber 而不是 number),Flowtype eslint 插件不会返回任何错误。每当我使用它时都应该触发该错误,但事实并非如此:(。如果我在我的文件上使用 Flow CLI,我会收到类似unknown Type 的错误。我想让 FlowType ESlint 插件检测相同的错误。
我正在使用提供这些规则的eslint-config-evenium 配置文件:
{
...
"rules": {
"flowtype/boolean-style": [
2,
"boolean"
],
"flowtype/define-flow-type": 1,
"flowtype/delimiter-dangle": [
2,
"never"
],
"flowtype/generic-spacing": [
2,
"never"
],
"flowtype/no-primitive-constructor-types": 2,
"flowtype/no-weak-types": 0,
"flowtype/object-type-delimiter": [
2,
"comma"
],
"flowtype/require-parameter-type": 2,
"flowtype/require-return-type": [
2,
"always",
{
"annotateUndefined": "never",
"excludeArrowFunctions": true
}
],
"flowtype/require-valid-file-annotation": 2,
"flowtype/semi": [
2,
"always"
],
"flowtype/space-after-type-colon": [
2,
"always"
],
"flowtype/space-before-generic-bracket": [
2,
"never"
],
"flowtype/space-before-type-colon": [
2,
"never"
],
"flowtype/type-id-match": [
2,
"^([A-Z][a-z0-9]+)+Type$"
],
"flowtype/union-intersection-spacing": [
2,
"always"
],
"flowtype/use-flow-type": 1,
"flowtype/valid-syntax": 1
},
"settings": {
"flowtype": {
"onlyFilesWithFlowAnnotation": true
}
}
}
如何让 ESlint 为未经授权的类型生成错误? 如果可能的话,我会很感激能够将不存在的类型添加到授权类型列表中。
任何人都知道如何做到这一点,或者是否有可能?
【问题讨论】:
-
一点也不。您分享的主题讨论了对不返回流类型的函数进行 linting。我的问题是,如果我编写一个不存在的类型(我的意思是
nomber而不是number),Flowtype eslint 插件不会返回任何错误。当我从不使用它时应该触发该错误,但事实并非如此:(。如果我在我的文件上使用 Flow CLI,我会收到类似unknown Type的错误。我想让 FlowType ESlint 插件检测相同的错误。 -
问题的根源在于您期望 eslint-plugin-flowtype 实际运行 Flow,但它并没有这样做。如果不运行 Flow,它无法判断哪些类型存在,哪些不存在。
-
谢谢。你指出了显而易见的,我认为你是对的!我不知道 ESLint 在不运行 Flow 的情况下如何做到这一点^^。我知道我的 VSCode Flow 插件运行一个 Flow 服务器来突出显示 Flow 代码错误。但我从来没有想过 ESlint 插件没有。