我正在制作我的第一个流程项目,而且我遇到了一个"奇怪的"行为。
这是一个重现我的问题的极简主义代码
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)
流量似乎"失去"文字类型......但为什么呢?我做错了吗?
答案 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,我不知道是否有任何短期计划来处理此案件。