选择一个工会

时间:2018-03-13 19:49:11

标签: flowtype

我正在尝试使用此处的ImageURISource类型https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Image/ImageSource.js#L15

type ImageURISource = {
  uri?: string,
  bundle?: string,
  method?: string,
  headers?: Object,
  body?: string,
  cache?: 'default' | 'reload' | 'force-cache' | 'only-if-cached',
  width?: number,
  height?: number,
  scale?: number,
};

export type ImageSource = ImageURISource | number | Array<ImageURISource>;

然而,我们看到它作为一个联盟和其他两个东西一起导出。是否可以从一个工会中挑选一个?

我希望这样做:

$Pick<ImageSource, ImageURISource>

1 个答案:

答案 0 :(得分:1)

它不是很漂亮,但您可以通过执行以下操作来使用细化来专门优化您想要的类型:

var source: ImageSource = {}
if (typeof source === "number" || Array.isArray(source)) throw new Error();
var uriSource = source;
type ImageURISource = typeof uriSource;

这里的缺点是,如果向union添加更多类型,您的代码将再次失败。

看起来你最好做一个PR来反应本地暴露那种类型。