Начиная с 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 метод подтверждения типа?