2016-07-12 12 views
0

Ich schreibe Erweiterung für Chrome in WebStrome IDE. Das Problem ist, dass der Typescript-Compiler über 'chrome variable nicht definiert' jammert. Wenn ich es mit declare var chrome: any; zum Schweigen bringen, dann wird es weinen über 'chrome Variable wurde möglicherweise nicht initialisiert'.Deaktivieren Sie bestimmte globale var Deklarationsprüfung in Typoskript

Gibt es eine Lösung? Definiere global explizit in tsconfig oder gibt es vielleicht eine bestimmte typedef-Datei für die Chrome-Laufzeitumgebung?

Antwort

1

Es gibt eine bestimmte Typedef für die Chrome-Laufzeit, um genau Ihr Problem zu lösen: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/chrome/chrome.d.ts. Wenn Sie das hinzufügen, sollte alles gut funktionieren.

Sie sollten dies mit Typings einrichten, anstatt es direkt zu tun. Nicht klar, ob Sie mit dem bereits vertraut sind, so etwas wie erfordern sollte:

# Install Typings on your system 
npm install typings --global 

# Install the Chrome type definitions from DefinitelyTyped ('dt') 
typings install dt~chrome --global --save 

Allgemeiner Ihre declare var Erklärung oben ist genug Typoskript der Überprüfung des chrome Variable deaktivieren und es wird erfolgreich kompilieren machen, wenn Sie Ich möchte nicht die oben genannten korrekten Typdefinitionen verwenden (oder wenn Sie in anderen Fällen keine solche finden).

Die Warnung, die Sie immer noch sehen, stammt aus WebStorm. Ich bin mir nicht sicher, was genau erforderlich ist, um das zum Schweigen zu bringen, aber ich würde erwarten, dass es auf eine externe Typdefinition umgestellt wird. Fügen Sie einfach den gleichen Code - declare var chrome: any - in eine neue chrome.d.ts-Datei ein und stellen Sie sicher, dass Ihre Kompilierungsdateien darin enthalten sind (wahrscheinlich geschieht dies automatisch). Das sollte es tun.

+0

Danke, auch die Installation von global vor-geschriebenen 'dt' mit Einzeiler ist bequemer als manuell schreiben Sie es von Grund auf neu jedes Mal, wenn Sie dev machine%) – ankhzet