繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM