flowjs: chamada do método `join`. O método não pode ser chamado em misto
Digamos que eu tenho animais constantes, com os quais eu importo
import animals from './animals
Digamos que os animais constantes sejam:
{
hoofed:[
'horses',
'sheep',
'goats'
],
feline: [
'lions',
'tigers'
],
canine: [
'dogs',
'wolves'
]
}
Diga que eu quero construir uma consulta de URL para a API de alguns animais e escreva o seguinte código:
const fq = Object.values(animals).reduce((memo, animalList) => memo + `animal:${animalList.join(' animal:')} `, '')
Agora, esse código gera uma sequência de animais, separados pela palavra animal e espaço em branco, que é codificado em URL e corresponde corretamente à superfície da API de destino.
No entanto, o FlowJS rejeita esse código com:
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
Minha pergunta é: por que? A matriz claramente não é mista, é uma constante e Object.valuesdevemos estar retornando algo do tipo [string]?
O que é detecção de fluxo e como evitá-lo?