流返回错误的类型

时间:2019-08-02 08:18:57

标签: flowtype

我有这段代码:

/* @flow */
import { List } from 'immutable';

type NotMapped = {|
  first: Array<number>,
  second: number,
|};

type Mapped = {|
  first: List<number>,
  second: number,
|};

const notMapped: NotMapped = {
  first: [1, 2, 3],
  second: 10,
};

const map = () => {
  const first = List(notMapped.first);
  return { ...notMapped, first };
}

const result: Mapped = map();

我希望结果为Mapped类型,但得到:

{|
  first: List<number> | Array<number>,
  second: number
|}

当我将Array<number>显式设置为first时,该流程怎么会认为是List(notMapped.first)?仅当我设置return { second: notMapped.second, first };时它才有效,但这不是解决方案,因为我有大量数据,并且无法设置所有项目。 我已经检查过了,这是一个众所周知的问题,但是在传播类型时,不是分配类型的对象。有什么解决办法吗?

0 个答案:

没有答案