流动恐怖“出口中缺少财产”。为什么?

时间:2018-04-05 13:27:48

标签: flowtype

我无法理解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文档中的位置,似乎只是谈论导出整个模块?

2 个答案:

答案 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'