Как я могу написать функцию утверждения асинхронного типа? - PullRequest
0 голосов
/ 21 февраля 2020

Начиная с TypeScript 3.7, можно написать функцию утверждения типа следующим образом:

function assertsIsArray(x: any): asserts x extends Array<any> {
  if(!Array.isArray(x)) throw new Error();
}

Однако предложение asserts занимает место оператора возвращаемого типа в объявлении функции. Обычно не нужно возвращаться из этих функций, но это делает объявление async функций явно невозможным:

async function assertsIsArray(x: any): asserts x extends Array<any> {
  if(!Array.isArray(x)) throw new Error();
}

// Type 'void' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value.

Часто проверка должна быть асинхронной (ie с yup ). Как я могу сделать asyn c метод подтверждения типа?

...