Ale*_*ksG 9 javascript flowtype
我已经关注https://flow.org/en/docs/install/,当在单个文件中使用时,流程正常工作,如下所示:
// @flow
type NumberAlias = number;
const n: NumberAlias = "123";
Run Code Online (Sandbox Code Playgroud)
Flow会正确地指出:
5: const n: NumberAlias = "123";
^^^^^ string. This type is incompatible with
5: const n: NumberAlias = "123";
^^^^^^^^^^^ number
Run Code Online (Sandbox Code Playgroud)
当我尝试从moduleA导出类型并在moduleB中导入该类型时出现问题:
(moduleA.js)
// @flow
export type NumberAlias = number;
Run Code Online (Sandbox Code Playgroud)
(moduleB.js)
// @flow
import type { NumberAlias } from './moduleA';
const n: NumberAlias = 123;
Run Code Online (Sandbox Code Playgroud)
Flow抱怨:
src/moduleB.js:3
3: import type { NumberAlias } from './moduleA';
^^^^^^^^^^^ ./moduleA. Required module not found
Run Code Online (Sandbox Code Playgroud)
这不是它在https://flow.org/en/docs/types/modules/中的描述吗?
文件夹结构是:
src/
moduleA.js
moduleB.js
.flowconfig
package.json
Run Code Online (Sandbox Code Playgroud)
当我设置它时,这正如您所期望的那样,使用src项目根目录下的文件夹中提供的两个文件。 moduleB.js:
如果我未能输入// @flow,Module A编译器将视为NumberAlias,any并且不会抱怨。我最初忘记添加它,这让我困惑了几分钟。
我能找到产生“未找到 moduleA”错误的唯一方法是更改 moduleA 的文件扩展名(或文件名)。例如,如果文件名为moduleA.ts、ModuleA.js或简单地称为moduleA,则导入将无法按上述方式解析。
顺便说一句,两者
import type { NumberAlias } from './moduleA';
Run Code Online (Sandbox Code Playgroud)
和
import type { NumberAlias } from './moduleA.js';
Run Code Online (Sandbox Code Playgroud)
在我当地的环境中解决得很好。您可以尝试第二种格式吗?
只要满足这些条件:
.js(或.jsx) 扩展名// @flow评论您提供的代码可以使用 Flow 0.57.3 和 Node 8.7.0 运行。根据错误消息,我建议特别检查文件名和扩展名。
| 归档时间: |
|
| 查看次数: |
780 次 |
| 最近记录: |