Verwenden Sie import / require in TypeScript, um Schnittstellendeklarationen zu erhalten

8

Wenn ich eine TypeScript-Deklarationsdatei (zB jquery.d.ts) mit der /// <reference path="..."/> -Syntax referenziere, muss ich sicherstellen, dass ich die entsprechende Bibliothek auf andere Weise lade, dh nur auf die .d-Datei referenziere. ts-Datei lädt die Bibliothek nicht.

Gibt es eine Möglichkeit, TypeScript zu veranlassen, einen require() -Aufruf für die Bibliothek zu generieren, wenn ich sie verwende? Wenn ich nicht AMD / requirys benutzen würde, könnte ich einfach require manuell aufrufen, aber ich würde gerne mit AMD arbeiten.

Der Vorteil ist, dass meine Abhängigkeiten nicht an zwei Stellen definiert sind. Die Referenzierung der Bibliothek aus einer .ts-Datei würde ausreichen, um sicherzustellen, dass sie geladen wird, anstatt die Liste der Abhängigkeiten manuell in meinem HTML-Code zu verwalten.

Update : Ich habe ein new geöffnet Frage , die meine genaue Situation verdeutlicht. Ich möchte die Antwort auf meine ursprüngliche Frage anerkennen, da ich nicht alle notwendigen Details angegeben habe.

    
dcstraw 19.10.2012, 23:08
quelle

2 Antworten

6

Ja, TypeScript unterstützt "externe" Module, bei denen es sich im Grunde um erstklassige AMD- oder CommonJS-Module handelt. Zum Beispiel:

MyLib.ts

%Vor%

MyProj.ts

%Vor%

Kompilieren Sie dies mit "--module amd", und Sie erhalten das richtige Modul und benötigen die für Sie generierte Syntax.

    
Brian Terlson 19.10.2012, 23:35
quelle
1

Ich schrieb etwas dazu in meinem Blog. Sie können auch ein Beispiel auf GitHub finden.

Die Lösung ist ziemlich lang zu erklären, aber im Grunde verwende ich Shims mit Require.JS, um einen Modulnamen zu definieren, der die Javascript-Bibliothek repräsentiert, die ich laden möchte. Ich erstelle dann eine TypeScript-Datei mit dem gleichen Namen, damit der TypeScript-Compiler Javascript-Code generiert, der die gewünschte JS-Bibliothek verwenden kann. Macht eigentlich keinen Sinn, aber lies bitte den Post und ich denke, es wird mehr Sinn ergeben.

    
Absolom 20.10.2012 23:17
quelle

Tags und Links

Django: Verwenden von Annotate, Count und Distinct in einem Queryset ___ tag123jquery ___ jQuery ist eine beliebte Cross-Browser-JavaScript-Bibliothek, die das DOM-Traversal (Document Object Model), die Ereignisbehandlung, Animationen und AJAX-Interaktionen erleichtert, indem die Diskrepanzen zwischen Browsern minimiert werden. Eine mit jQuery gekennzeichnete Frage sollte mit jquery in Zusammenhang stehen, daher sollte jquery von dem fraglichen Code verwendet werden, und mindestens eine jquery-nutzungsbezogene Elemente müssen in der Frage enthalten sein. ___ QSTNHDR ___ JQuery-Selektor-Schleife vs Funktion je verwenden ___ answer12915328 ___

Angenommen, Sie beziehen sich auf jQuery-Funktionen, ja, die beiden Codefragmente sind identisch.

Sie sollten die Funktion %code% entweder verwenden, wenn Sie mit dem Index arbeiten möchten, oder um eine lange Funktionskette zu verhindern.

Ihr Verständnis von %code% gilt für jQuery-Methoden. Aber seien Sie gewarnt, einige Plugins können den Selektor auf andere Weise behandeln oder nur das erste passende Element zum Beispiel beeinflussen.

    
___ qstntxt ___
  1. Machen diese zwei Code-Schnipsel identische Dinge? Wenn ja, wann sollte man gegenüber dem anderen verwendet werden? (Außerdem, wenn Sie etwas mit %code% oder %code% machen müssen)

    %Vor%

    gegen

    %Vor%
  2. Im Allgemeinen kann angenommen werden, dass %code% "run %code% on jedes -Element bedeutet, das mit dem Selektor übereinstimmt, außer wenn der Name der Methode %code% ? dh jedes ist ein Sonderfall)

___ answer12915422 ___

Ja, die meisten jQuery-Funktionen sind so gestaltet.

Sehen Sie sich das Codebeispiel an:

%Vor%

Damit du auch %code% wieder verwenden kannst, solltest du einfach:

verwenden

%code%

nicht

%Vor%     
___