2017-12-05 148 views
5

Próbuję dodać funkcję asynchroniczną w projekcie TypeScript. Kod wygląda następująco:TypeScript narzeka z i bez lib

chrome.tabs.onUpdated.addListener(async (id, c, t) => { ... }); 

maszynopis narzeka:

błędzie TS2705: Funkcja asynchroniczny lub metoda ES5/ES3 wymaga konstruktora Obietnica '. Upewnij się, że masz deklarację dla konstruktora Obietnica 'lub „to” ES2015 w swoim --lib opcji

Kiedy dodać lib: ['es2015'] do tsconfig, maszynopis zaczyna narzekać na wszystkich wywołań console.log mówiąc, że konsola jest niezdefiniowany.

Odpowiedz

4

default libs dla es5DOM,ES5, więc jeśli podasz es2015 będzie trzeba także dodać dom wyraźnie jak console jest zdefiniowany w bibliotece dom. Próbka tsconfig.json:

{ 
    "compilerOptions": { 
     "target": "es5", 
     "lib": [ 
      "es2015", 
      "dom" 
     ] 
    } 
} 

Typescript ma modułowe podejście do bibliotek domyślnych, więc można zawierać tylko to, co jest dostępne na podstawie środowiska.

+0

To prawie działa! tslint wciąż narzeka na to! $ # @ $ # @ $ # @. Powiem po prostu, żeby to zignorować. – zmbq

+0

# @! # @! #! @ Nie mogłem znaleźć sposobu na wyłączenie tej wiadomości! To albo tslint albo PyCharm. – zmbq

+0

Jaką wiadomość otrzymujesz? –