【问题标题】:Importing TypeScript modules in Flow在 Flow 中导入 TypeScript 模块
【发布时间】:2018-11-01 07:37:48
【问题描述】:

我们正在将前端 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 文件的模块中删除了@flow。不过,这是一个可悲的解决方案,我本来希望对这些进行流量检查。

标签: typescript flowtype


【解决方案1】:

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

declare module TsStub {
  declare var exports: any;
}

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

[libs]
interfaces/

然后在我的 .flowconfig 中引用存根:

module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(ts\|tsx\)$' -> 'TsStub'

我现在需要导入带有扩展名的 ts 文件(例如 import myTsModule from 'my-ts-module.ts'),但它编译得很好。

当我开始将流文件转换为 TS 时,我只需要修复扩展,但编译器会帮助您解决这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 2013-08-09
    • 2012-11-03
    • 2021-11-28
    • 2020-06-06
    • 1970-01-01
    • 2015-05-08
    相关资源
    最近更新 更多