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

标签 javascript types flowtype

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

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 的实际类型如何,我“应该”能够对其执行数组操作。但是我无法使用 map在 x 上运行,并收到以下错误:

Cannot instantiate array type because string [1] is incompatible with number [2].

我想知道解决这个问题并能够在不收到错误的情况下执行数组操作的正确方法是什么。

Link到流 fiddle 。

最佳答案

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

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

Try it

关于javascript - Flow javascript混合类型数组不能使用数组函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58151323/

相关文章:

Javascript .append() 和 .fadein()

javascript - 只要按下特定键就循环运行函数

recursion - 相互递归的类型推断

java - 如何使用缓冲读取器和异常处理对输入数据类型进行分类?

javascript - 如何使用 FlowType 和 ES6 简洁地注释对象解构?

javascript - 使用 iframe 时输入检查 instanceof 的安全方法?

flowtype - 对象不能有键

javascript - AngularJS 在没有被告知的情况下将两个变量绑定(bind)在一起

javascript - 如何在EaselJS中实现Keyup事件

c# - 是否有检查对象是否为内置数据类型的函数?