Búsqueda de sitios web

typescript - ¿Cómo puedo escribir una función de aserción de tipo asincrónica?


Desde TypeScript 3.7, se puede escribir una función de aserción de tipo de la siguiente manera:

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

Sin embargo, la cláusula asserts ocupa el lugar de la declaración del tipo de retorno en la declaración de la función. Normalmente no es necesario retornar desde estas funciones, pero esto hace que declarar funciones async sea aparentemente imposible:

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.

A menudo, la validación necesita ser asincrónica (es decir, con Yup). ¿Cómo puedo crear un método de aserción de tipo asincrónico?

Artículos relacionados