[英]Flow lose literal type in intersection type
我正在做我的第一个流程项目,但我坚持“奇怪”的行为。
这是重现我的问题的极简代码
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)
(流程v0.47.0,请尝试流程 )
Flow似乎“失去了”字面量……但是为什么呢? 难道我做错了什么 ?
答案是Flow尚不支持此功能。
一种解决方案是在每个类型声明中使用交集:
export type PropBase = { name: string }
export type PropTyped =
| { type: 'string', value: string & PropBase }
| { type: 'number', value: number & PropBase}
这是一个专门的问题 ,我不知道是否有任何短期计划来处理这种情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.