2017-03-08 2 views
2

Ich verwende TypeScript für eine Webanwendung mit Backbone-, Marionetten- und Backbone-Verknüpfungen.Kann ich Module mit Artscript als global verfügbar erklären?

überall Diese Bibliotheken gebündelt werden und verfügbar Webpack des ProvidePlugin verwenden, aber die TS-Compiler glücklich zu halten, muss ich folgendes auf jedes Modul in meiner Anwendung hinzuzufügen:

import * as _ from "underscore"; 
import * as Backbone from "backbone"; 
import * as Marionette from "backbone.marionette"; 
import "backbone-associations"; 

Dies könnte möglicherweise hunderte sein Module/Dateien.

Gibt es irgendwie zu sagen, dass TypeScript diese allgemein verfügbar sein wird? Vielleicht eine Einstellung in tsconfig.json?

Antwort

-1

Es hängt von den (z. B.) underscore Typings ab. Wenn Sie TS 2+ verwenden, sollte der Compiler alle Typings innerhalb von node_modules/@types/... übernehmen. Sie können sie auch selbst in der typings Eigenschaft Ihrer tsconfig.json angeben. See the docs.

TypeScript tries to prevent you from mixing UMD and ES modules. Es wird die folgende Fehlermeldung angezeigt:

"_" refers to a UMD global, but the current file is a module. 
Consider adding an import instead. 

Ein Weg, um dieses ist eine benutzerdefinierte .d.ts-Datei zu erstellen, können Sie es nennen global.d.ts. spielt keine Rolle. Legen Sie es in Ihrem TS-Projekt und fügen Sie folgendes:

import * as _ from 'underscore'; 

declare global { 
    const _:_.UnderscoreStatic; 
} 

Jetzt underscore sollte global verfügbar sein und Sie sollten auch in der Lage UMD + ES import/export Aussagen zu mischen. You can find more info about this in the docs.

+1

Ich benutze TS 2.2.1, und alle Typen sind in 'node_modules/@ types', aber ich bekomme immer noch Fehler, wenn ich einen der oben genannten Importe von einem bestimmten Modul entfernen. Ich dachte, wenn die Importe in * irgendeiner * Datei wären, müssten sie vielleicht * alle * sein. Ich würde es gerne wissen, bevor ich versuche, sie alle zu entfernen, weil ich eine große Anzahl von Modulen habe. – user888734

+0

Sie sollten die Fehler hinzufügen, die Sie zu Ihrer Frage erhalten. Ansonsten ist es schwierig zu erraten, welches Problem Sie haben, da dies auch von Ihrer TS-Konfiguration abhängt. –

Verwandte Themen