我们正在将前端React应用程序从Flow迁移到TypeScript。

我有Webpack和TS配置设置来加载TypeScript文件,并且所有这些都可以编译和构建。

流检查是单独执行的(不是构建过程的一部分),直到所有文件都切换到TypeScript,但这会失败,并出现以下性质的错误:

src/SomeFlowModule.js:5
  5: import TypeScriptModule from './TypeScriptModule';
                           ^^^^^^^^^^^^^ ./TypeScriptModule. Required module not found

有没有一种方法可以使Flow知道导入的TypeScript文件,也许只是将它们视为any

最佳答案

我想出的解决方案是为TypeScript文件添加一个声明:

declare module TsStub {
  declare var exports: any;
}

您需要在.flowconfig中引用此 stub ,以便Flow在[libs]键下知道它。例如。如果将其保存在interfaces/TsStub.js中,则将其添加到.flowconfig中:
[libs]
interfaces/

然后在我的.flowconfig中引用 stub :
module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(ts\|tsx\)$' -> 'TsStub'

我现在需要导入扩展名为ts的ts文件(例如import myTsModule from 'my-ts-module.ts'),但是编译起来还不错。

当我开始将流文件转换为TS时,我只需要修复扩展名,但是编译器会为此提供帮助。

09-26 07:28