我无法理解Flow在抱怨什么。当我在这两个文件上运行flow时,出现错误Property MyType is missing in exports [1]
定义类型的文件:
// types.js
// @flow
export type MyType = {
from: string,
to: string,
subject: string,
text: string,
};
使用类型的文件:
// myfile.js
// @flow
const { MyType } = require('./types') // flow error on this line
const foo = ({
from = 'default',
to,
subject,
text,
}: MyType) => {
doSOmething();
}
导出我的类型的正确语法是什么?它在Flow文档中的位置,似乎只是谈论导出整个模块?
答案 0 :(得分:2)
const { MyType } = require('./types')
是真正的JavaScript,这意味着即使删除Flowtype声明,它仍会运行。 MyType
在运行时不存在,因为在执行之前会删除所有Flowtype逻辑。
您应该将其导入为
import type { MyType } from "./types";
答案 1 :(得分:2)
在Module Types下提到,如果仔细阅读,你会发现它正在讨论导出类型和值以及如何导入每个类型和值。这有点误导,因为页面标题暗示您正在导入“模块” - 实际上您正在导入导出的类型或值。
type
语句应使用import
关键字来表示您要导入类型,而不是值。
由于您已导出类型而非值,但尝试导入值,因此会收到错误。
import type { MyType } from './types'