【发布时间】:2019-02-18 11:08:35
【问题描述】:
我有一个使用流类型的库。它还有一个依赖项,它的部分接口包括来自该库的flow-typed 文件的类型定义。我使用flow-copy-source 来确保已安装的包中存在.js.flow 文件。
我遇到的问题是,当这个库的使用者导入我的模块时,从依赖项中导入的类型也会被导入,但是现在使用者必须为该依赖项安装自己的 flow-typed 定义副本.通常这没问题,但如果该消费代码具有该依赖项本身的不同版本,则无法避免定义冲突。
具体来说,我的库是一个使用 axios@0.18.x 的 HTTP 服务包装器,并且具有如下导入:
import type { Axios, AxiosXHRConfig } from 'axios';
flow-typed 定义的0.18.x 版本中的AxiosXHRConfig 采用两个类型参数。与此同时,消费 应用程序正在使用旧版本的axios,并且该旧版本具有不同版本的 axios 库定义。由于两个库定义都有:
declare module "axios" {
// ...
}
...库中的import type { ... } from 'axios' 无法解析为库中的flow-typed/npm/axios_v0.18.x.js,而不是使用应用程序的flow-typed/npm/axios_v0.17.x.js。
没有复制库中的flow-typed 定义,您如何制作具有全局类型依赖关系的可分发流类型包,以供其他流项目安全使用?
【问题讨论】:
标签: flowtype flow-typed