我们目前有一个 create-react-app 项目,该项目正在进行从 Flow 到 Typescript 的增量迁移。这意味着禁用一些不受欢迎的 ESLint 规则。为了自定义 ESLint,我已经添加EXTEND_ESLINT=true
到.env
文件中。
在添加此设置之前,我的 Typescript 代码可以正常编译。之后,我在某些(但不是全部)Typescript 语法上遇到了解析错误。
// Type guards
export function f0<T>(x: T|undefined): x is T { ...
// Constrained generics
export function f1<T extends number>(x: T) { ...
// Type assertions
... return x as T
我可能还没有找到其他无法识别的语法。
至今
我没有发现任何类似的问题或错误报告。我了解某些 Typescript 功能在当前 CRA 版本中不可用,例如
const enum
,但我没有发现任何提及上面列出的功能。我也很确定我的Typescript 和 ESLint 版本与typescript-eslint
.我尝试了许多不同的
.eslintrc
组合。我.eslintrc.js
在附加存储库的文件中留下了一些最有前途的。当前设置是create-react-app 推荐的设置,其中 Typescript linting 在该overrides
部分中设置。ESLint Typescript 配置是按照 monorepo 的说明设置的
typescript-eslint
,特别是typescript-eslint/parser
,typescript-eslint/eslint-plugin
解决方案
弹出不是一种选择。如果找不到其他解决方案,我宁愿一次性完成 Flow -> TS 转换。
我们目前使用customize-cra扩展我们的 CRA 配置。欢迎涉及此问题的解决方案。
我喜欢它给我的灵活性,
.eslintrc
但我很乐意取消它,前提是我仍然可以设置 lint 规则。
笔记
我已经包含
customize-cra
在演示 repo 中以准确反映我们的项目,但问题仍然存在customize-cra
,表明它可能不是罪魁祸首。有关
src/components/TestComponent/fn.ts
问题语法的示例,请参阅。我目前的假设是 CRA ESLint 配置中有一些设置在
EXTEND_ESLINT=true
.
更新
- 我在 create-react-app 上打开了一个问题
- 该问题上列出的部分解决方法。还是不理想。