Estoy tratando de entender por qué la string de tipo de retorno en el siguiente método está subrayada en rojo como error:
exportPageAsText(pageNumber: number): string { (async () => { const text = await this.pdfViewerService.getPageAsText(pageNumber); console.log(text); return text; })(); } El mensaje de error dice: A function whose declared type is neither 'void' nor 'any' must return a value. así que moví el return text; fuera del alcance async y lo colocó después de })(); pero eso hizo que la variable de text fuera irreconocible.
Luego pensé que tal vez se debía a que el tipo de devolución del método debería ser una Promise , así que cambié la firma a:
exportPageAsText(pageNumber: number): Promise<string> Pero recibo un nuevo error que dice que A function whose declared type is neither 'void' nor 'any' must return a value.
¿Puede alguien por favor ayudarme a entender lo que estoy haciendo mal?
Desea usar await , por lo que necesita una función asíncrona. Lo que creó es una función asíncrona de autoinvocación. Pero devolver un valor dentro de la función de autoinvocación no lo devuelve para la función base.
Lo que está buscando es hacer que la función base sea asíncrona y establecer el tipo de retorno en Promise<string> :
async exportPageAsText(pageNumber: number): Promise<string> { const text = await this.pdfViewerService.getPageAsText(pageNumber); console.log(text); return text; }Su método espera un retorno antes del final, pero el evento de la promesa declarada por async () => {... no se devuelve
así que dos cosas para cambiar en tu código
Promise<string>En su caso, la sintaxis se verá como
exportPageAsText(pageNumber: number): Promise<string> { return (async () => { const text = await this.pdfViewerService.getPageAsText(pageNumber); console.log(text); return text; })(); }Así es como lo hubiera hecho. asíncrono/espera.
const exportPageAsText = async (pageNumber: number): Promise<string> => { const text: string = await this.pdfViewerService.getPageAsText(pageNumber); console.log(text); return text; }