Использование Promise в качестве возвращаемого типа в Flow
Я использую Flow 0.30.0. У меня есть функция, которая возвращает обещание:
function process(callback:Function):Promise {
return new Promise((r,re) => callback)
}
Поток вызывает ошибку, жалуясь:
function process(callback:Function):Promise {
^^^^^^^ Promise. Application of polymorphic type needs <list of 1 argument>. (Can use '*' for inferrable ones)
Это работает в Try Flow, но не локально. Есть идеи по этому вопросу?
Ответы
Ответ 1
В соответствии с журналом изменений потока было внесено изменение в v0.28.0, которое сделало аргументы типа явным. Явное указание типа возврата на Promise<any>
должно исправить вашу проблему.
В качестве альтернативы вы можете установить следующий флаг в значение false, хотя это временный флаг, который будет удален в будущем
experimental.strict_type_args=false
https://github.com/facebook/flow/blob/master/Changelog.md#v0280
Ответ 2
Я предполагаю, что это было решено некоторое время назад, и правильный ответ на то, что происходило, было то, что это было несоответствие версий между локальным и оперативным интерпретатором потока.
Тем не менее, поскольку этот вопрос возникает в верхней части результатов поиска при поиске способа аннотировать Обещания потока, вероятно, стоит упомянуть, что исправление для этих типов ситуаций заключается в указании типа потока, который Обещание разрешает в качестве угловой скобки потока. параметр.
В этом случае добавление "" к аннотации Promise заглушает ошибку, например...
function process(callback:Function):Promise<any> {
return new Promise((r,re) => callback)
}
В документах здесь также для другого примера