2016-04-17 3 views
0

ich eine Datei module.d.ts mit Erklärung habenTyposkript Modul-Ladefehler

declare module "ArrayItem" {import out = require("models/ArrayItem"); export = out;} 

Jetzt habe ich eine Datei Array.ts und die erste Zeile ist

/// <reference path="../module.d.ts" /> 
import array = require("ArrayItem"). 

Aber das funktioniert nicht . Ich habe einen Skriptfehler.

Wenn ich,

/// <reference path="../module.d.ts" /> 
import array = require("models/ArrayItem") 

Dann habe ich keine Fehler.

Was ist das Problem beim Laden von Modulen hier?

Wenn ich eine module.d.ts habe, dann sollte das Arrayitem-Modul von require ("arrayitem") geladen werden.

Korrekt? Oder sollte ich immer den richtigen Pfad für ArrayItem?

Ich bin hier verwirrt. Kann jemand hier Hilfe schicken?

Antwort

1

Wenn Sie der Besitzer von ArrayItem.ts sind, dann brauchen Sie module.d.ts nicht. Referenzieren Sie das Modul direkt.

Sie erhalten einen Laufzeitfehler, aber keinen Compilerfehler, weil Ihre Laufzeit versucht, ArrayItem.js für den aktuellen Pfad und nicht von models/ArrayItem zu laden. Es hat keinen Sinn in Ihrer Datei module.d.ts, da es nur ein Wrapping der Definitionen (aber nicht des Codes) in das Typoskript-Modul ist, das Sie bereits mit einem direkten Verweis auf das Modul aufnehmen werden.

Verwenden Sie also nicht /// und importieren Sie mit require ("models/ArrayItem").

+0

ok..so sollte ich immer sagen import array = require ("models/ArrayItem") obwohl ich module.d.ts Datei habe? Können Sie bitte ausarbeiten, was ich hier tun soll? – user2325247

+0

Sie haben ein Typoskript-Modul, das auf ein anderes Typoskript-Modul verweist, sodass module.d.ts nicht benötigt wird. Sie würden nur so etwas tun, wenn Sie mit einer JavaScript-Bibliothek in Typoskript arbeiten würden. –

+0

Verstanden ... Ich muss einige Änderungen vornehmen. Vielen Dank, – user2325247