Подтвердить что ты не робот

Использование 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, но не локально. Есть идеи по этому вопросу?

4b9b3361

Ответ 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)
}

В документах здесь также для другого примера