Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

189
Views
async/await and promise in TypeScript

I am trying to understand why the return type string in the following method is underlined red as error:

exportPageAsText(pageNumber: number): string {
        (async () => {
            const text = await this.pdfViewerService.getPageAsText(pageNumber);
            console.log(text);
            return text;
        })();
}

The error message reads: A function whose declared type is neither 'void' nor 'any' must return a value. so I moved return text; out of the async scope and placed it after })(); but that made the text variable unrecognizable.

Then I thought maybe it's because the method return type should be a Promise so I changed the signature to:

exportPageAsText(pageNumber: number): Promise<string>

But I get a new error saying that A function whose declared type is neither 'void' nor 'any' must return a value.

Can someone please help me understand what I am doing wrong?

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

You want to use await, so you need an async function. What you created is a self-invoking async function. But returning a value inside the self-invoking function does not return it for the base function.

What you are looking for is to make the base function async, and setting the return type to Promise<string>:

async exportPageAsText(pageNumber: number): Promise<string> {
  const text = await this.pdfViewerService.getPageAsText(pageNumber);
  console.log(text);
  return text;
}
about 4 years ago · Juan Pablo Isaza Report

0

Your method wait a return before the end but event the promise declared by async () => {... is not returned

so two thing to change in your code

  1. return the async()
  2. change the type of return in the methode declaration by Promise<string>

In your case syntax it will look like

exportPageAsText(pageNumber: number): Promise<string> {
    return (async () => {
        const text = await this.pdfViewerService.getPageAsText(pageNumber);
        console.log(text);
        return text;
    })();
}
about 4 years ago · Juan Pablo Isaza Report

0

This is how I would have done it. async/await.

    const exportPageAsText = async (pageNumber: number): Promise<string> => {
        const text: string = await this.pdfViewerService.getPageAsText(pageNumber);
        console.log(text);
        return text;
    }
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!