gpt4 book ai didi

javascript - flowjs : call of method `join` . 无法在混合上调用方法

转载 作者:行者123 更新时间:2023-11-29 17:50:30 25 4
gpt4 key购买 nike

假设我有一个恒定的动物,我用它导入

import animals from './animals

假设动物常数是:

{
hoofed:[
'horses',
'sheep',
'goats'
],
feline: [
'lions',
'tigers'
],
canine: [
'dogs',
'wolves'
]
}

假设我要构造一个Url查询一些动物api,写如下代码:

const fq = Object.values(animals).reduce((memo, animalList) => memo + `animal:${animalList.join(' animal:')} `, '')

现在这段代码生成一串动物,由单词 animal 和空格分隔,然后对其进行 URL 编码并正确匹配目标 API 表面。

然而,FlowJS 拒绝此代码:

13:   const fq = Object.values(animals).reduce((memo, animalList) => memo + `animal:${animalList.join(' animal:')} `, '')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call of method `join`. Method cannot be called on
13: const fq = Object.values(animals).reduce((memo, animalList) => memo + `animal:${animalList.join(' animal:')} `, '')
^^^^^^^^ mixed

我的问题是:为什么?该数组显然没有混合,它是一个常量,Object.values 应该返回 [string] 类型的东西?

什么是流量检测,如何避免?

最佳答案

Object.values函数返回 Array<mixed>现在输入。因此,您需要将其转换为如下所示的字符串数组数组。

let fq: string[][] = (Object.values(animals): any);

fq = fq
.reduce((memo, animalList) => memo + `animal:${animalList.join(' animal:')} `, '')

或者像这样使用内联转换:

const fq = ((Object.values(animals): any): string[][])
.reduce((memo, animalList) => memo + `animal:${animalList.join(' animal:')} `, '')

Flow 目前不支持这个功能,因为 Object.values功能是in stage-4作为提案。所以它还不是语言的一部分。一旦 Object.values 出现,您就不需要通过强制转换来解决此问题只是时间问题。函数是 EcmaScript 标准的一部分,流程团队可能会正确实现它。

关于javascript - flowjs : call of method `join` . 无法在混合上调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44241560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com