流量在交集类型中丢失文字类型

时间:2017-05-26 09:06:31

标签: javascript flowtype

我正在制作我的第一个流程项目,而且我遇到了一个"奇怪的"行为。

这是一个重现我的问题的极简主义代码

type PropBase = { name: string }

export type PropTyped =
  | { type: 'string', value: string }
  | { type: 'number', value: number }

export type Prop = PropBase & PropTyped

const p1: Prop = { name: 'prop1', type: 'string', value: 'coucou' };
// Error
const p2: Prop = p1;

错误是:

10: const p2: Prop = p1;
                     ^ intersection type. This type is incompatible with
7: export type Prop = PropBase & PropTyped
                                 ^ union: object type(s)

(Flow v0.47.0,try flow

流量似乎"失去"文字类型......但为什么呢?我做错了吗?

1 个答案:

答案 0 :(得分:0)

答案是Flow尚不支持。

解决方案是使用每个类型声明中的交集:

export type PropBase = { name: string }

export type PropTyped =
  | { type: 'string', value: string & PropBase }
  | { type: 'number', value: number & PropBase}

Here is a dedicated issue,我不知道是否有任何短期计划来处理此案件。