Kompajler za TypeScript kaže „Asinkrona funkcija ili metoda u ES5/ES3 zahtijeva konstruktor 'Promise'“; kako to mogu riješiti?


Bok, koristim async/await u svom TypeScript projektu, ali dobivam ovaj zapis:

[ts] Asinkrona funkcija ili metoda u ES5/ES3 zahtijeva konstruktor 'Promise'. Provjerite imate li deklaraciju za konstruktor 'Promise' ili uključite 'ES2015' u svoju --lib opciju.

Kako to mogu riješiti?

Odgovor #1

Kao što poruka o pogrešci kaže, dodajte lib: es2015 u svoj tsconfig.json

// tsconfig.json
{
  "compilerOptions": {
    "lib": [ "es2015" ]
  }
}

AŽURIRANJE: ako vam ovo ne odgovara, pokušajte ovo:

IDE-ovi JetBrains poput WebStorma prema zadanim postavkama koriste vlastitu implementaciju. Provjerite jeste li ga konfigurirali da koristi TypeScript jezičnu uslugu umjesto toga.

Za Visual Studio, projektne datoteke i tsconfig.json su međusobno isključivi. Morat ćete izravno konfigurirati svoj projekt.

https://github.com/Microsoft/TypeScript/issues/3983#issuecomment-123861491

Odgovor #2

Isprobajte ovaj paket koji sadrži definicije tipova za es6-promise

npm install --save @types/es6-promise

Odgovor #3

Ako ste u VS-u, izbrišite tsconfig.json i desnom tipkom miša kliknite na projekt u Solution Exploreru, zatim kliknite na Properties->TypeScript Build in General i promijenite sljedeće

  • Verzija ECMAScripta: ECMAScript 6

  • Sustav modula: ES2015

Odgovor #4

U mom slučaju, jednostavno sam slučajno izbrisao svoj 'return' izraz u funkciji, i ova se pogreška prikazivala dok ga nisam vratio.

Povezani članci