¿Hay alguna forma de obtener propiedades async con la desestructuración en JavaScript/TypeScript?
Como esto:
class A { public get x() { return this.getX() } private async getX() { return 5 } } async function f(a : A) { const { x } = a console.log(x) // Promise } async function g(a : A) { // works as const x = await ax const { await x } = a console.log(x) // 5 }Si se permite el uso de la función de utilidad, lo siguiente funcionaría.
Su efecto secundario es que se ejecutan los captadores de todas las propiedades.
const classToObject = async theClass => { const originalClass = theClass || {} const keys = Object.getOwnPropertyNames(Object.getPrototypeOf(originalClass)) let classAsObj = {} for(const key of keys) { classAsObj[key] = await originalClass[key] } return classAsObj } async function g(a : A) { // works as const x = await ax const {x} = await classToObject(a); console.log(x) // 5 }