【发布时间】:2020-01-28 18:29:15
【问题描述】:
我正在使用流进行类型检查,我有以下功能。
function foo(x: Array<number> | Array<string>) {
const s = x.map(i => i);
}
我需要使用Array<number> | Array<string> 而不是Array<number | string>,因为某些代码会自动生成并且不受我控制,返回类型为Array<number> | Array<string>。
显然,不管x 的实际类型如何,我“应该” 能够对其执行数组操作。但是我无法在 x 上使用 map 函数,并且收到以下错误:
Cannot instantiate array type because string [1] is incompatible with number [2].
我想知道解决此问题并能够执行数组操作而不会收到错误的正确方法是什么。
Link 到一个流小提琴。
【问题讨论】:
-
听起来像是流程中的错误。似乎相信您的地图输出
number | string。它应该能够分辨出来自x的元素总是是number或string,这是在调用函数foo时做出的选择,而不是在map内。
标签: javascript types flowtype