flowjs: llamada del método `join`. El método no se puede invocar en mixto
Digamos que tengo animales constantes, con los que importo
import animals from './animals
Digamos que la constante de los animales es:
{
hoofed:[
'horses',
'sheep',
'goats'
],
feline: [
'lions',
'tigers'
],
canine: [
'dogs',
'wolves'
]
}
Digamos que quiero construir una consulta de URL para la API de algunos animales y escribir el siguiente código:
const fq = Object.values(animals).reduce((memo, animalList) => memo + `animal:${animalList.join(' animal:')} `, '')
Ahora este código genera una cadena de animales, separados por la palabra animal y espacios en blanco, que luego se codifica en URL y coincide correctamente con la superficie API de destino.
Sin embargo, FlowJS rechaza este código con:
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
Mi pregunta es: ¿por qué? La matriz claramente no está mezclada, es una constante y Object.valuesdebería estar devolviendo algo de tipo [cadena]?
¿Qué es la detección de flujo y cómo puedo evitarlo?