Typescript - «... не является функцией или ее возвращаемое значение не повторяется» - PullRequest
0 голосов
/ 19 марта 2019

У меня есть эта вспомогательная функция:

export function to(promise: Promise<any>) {
  return promise
    .then((data: any) => [null, data])
    .catch((err: Error) => [err, null]);
}

Эта функция (теоретически) должна помочь мне отлавливать ошибки при использовании await в функциях. например:

const [err, data] = await to(validate(card));

Проблема в том, что во время выполнения я получаю следующую ошибку:

to не является функцией или ее возвращаемое значение не может быть повторено

Хотя ожидаемая подпись возврата должна быть Promise<[Error, null]> Promise<[null, Error]>, она выглядит как возврат (опять же, теоретически, потому что на самом деле происходит сбой): Promise<any[] | Error[]>:

function to

Чего мне не хватает?

1 Ответ

2 голосов
/ 19 марта 2019

Я думаю, что проблема вызвана уткой, TypeScript не может правильно угадать тип возвращаемого значения из выражений.

Вы можете ввести это явно:

function to(promise: Promise<any>): Promise<[Error, any]> {
    return promise
        .then((data: any) => [null, data] as [Error, any])
        .catch((err: Error) => [err, null] as [Error, any]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...