3

我在流类型目录中有一个文件,其中包含一些常见的类型声明,例如:

common-types.js

// @flow

declare module 'common-types' {
  declare export type RequestState = {
    setLoading: () => void,
    setFinished: () => void,
    setError: (error: AxiosFailure) => void,
    reset: () => void,
    status: LoadingStatus,
    error: AxiosFailure | void,
  };

  declare export type LoadingStatus = '' | 'loading' | 'finished';

  declare export type ErrorObject = { [key: string]: string | string[] | Error };

  declare export type AxiosFailure = {
    status: number,
    data: ErrorObject,
  }

}

现在我在文件中像这样导入它:

import type { RequestState } from 'common-types';

但我收到有关缺少文件扩展名的 eslint-plugin-import 错误以及无法解析模块“通用类型”的路径

我该如何处理?

4

1 回答 1

0

我找到了解决方案。正如@logansmyth 在评论中建议的那样

您的类型应该只是将您的代码与您的数据一起传递

我遇到的问题是 webpack 别名。Flow 指出了有关未安装模块的错误。但是我发现我可以在 .flowconfig 中使用映射器,例如:

module.name_mapper='^common' ->'<PROJECT_ROOT>/src/common'

以及 webpack 别名,这使得 eslint-plugin-import 和 flow 以及正确的类型检查都很开心。现在我将类型与common组件一起导入,不会弄乱流类型的目录。

于 2017-08-31T07:17:34.157 回答