首页 > 解决方案 > 流返回错误的类型

问题描述

我有这段代码:

/* @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>当我明确设置为时,该流程怎么会认为它可能firstList(notMapped.first)?它仅在我设置时才有效return { second: notMapped.second, first };,但这不是解决方案,因为我有大量数据并且我无法设置每个项目。我已经检查过了,这是众所周知的问题,但是在传播类型时,不是分配类型的对象。有什么解决方案吗?

标签: flowtype

解决方案


推荐阅读