我有这段代码:
/* @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 };
时它才有效,但这不是解决方案,因为我有大量数据,并且无法设置所有项目。
我已经检查过了,这是一个众所周知的问题,但是在传播类型时,不是分配类型的对象。有什么解决办法吗?