Flow javascript混合类型数组不能使用数组函数

问题描述 投票:0回答:1

我正在使用流程进行类型检查,并且具有以下功能。

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到小提琴。

javascript types flowtype
1个回答
0
投票

我认为您可以在这种情况下使用泛型

function foo<I: number | string>(x: Array<I>) {
    const s = x.map(i => i); 
}

Try it

© www.soinside.com 2019 - 2024. All rights reserved.