2012-12-06 14 views
9

Ich habe eine einfache TypeScript (ts), die eine Funktion aus einer JavaScript-Datei benötigt. Wie kann ich diese js-Datei in die ts-Datei importieren? Muss ich eine ts-Datei für diese js-Datei erstellen, um sie in meiner ts-Datei verwenden zu können?Load js Datei in Typoskript-Datei

Antwort

22

ist Der einfachste Weg, Sie declare die Funktion nur verwenden:

File1.js

function greet() { return "Hello!"; } 

File2.ts

declare function greet(): string; 

/* ... later ... */ 
var hi = greet(); 

Wenn Ihr Szenario ist mehr com Plex (d.h. mehrere Dateien referenzieren File1.js, oder es gibt viele Funktionen in File1.js, die Datei2.ts) überfluten würden, können Sie eine Datei File1.d.ts machen und verweisen Sie auf File2.ts:

File1. d.ts

function greet(): string; 

File2.ts

/// <reference path="File1.d.ts" /> 

/* ... later ... */ 
var hi = greet(); 
+0

Hallo Ryan, danke das funktioniert! Eine Datei, die ich verwende, enthält jedoch Methoden, die zur Math-Bibliothek hinzugefügt wurden. Die Math.uuid.js-Datei enthält also drei Methoden. Math.uuid() gibt String zurück und zwei andere ... TS beschwert sich bei dieser "declare function Math.uuid(): string;" (offensichtlich). Wie würde ich diese Methoden einbringen? Vielen Dank! –

+2

Es gefunden! Ich erklärte diese Schnittstelle ... Schnittstelle Math { uuid(): string; } und es ist alles gut. –

+1

Gibt es eine Möglichkeit, eine * .d.ts-Datei automatisch aus der .js-Datei zu generieren? Danke - dave –

2

nur für die Archive, wenn Sie einen /// ref für eine JavaScript-Datei in Ihrem TS-Datei hinzufügen, wird der Compiler versuchen validiere den gesamten Code in den JS-Dateien und werfen Sie eine große Fehlerliste. Probieren Sie es mit jQuery oder so ähnlich und Sie werden sehen, was ich meine.

+0

Yup, das habe ich gesehen. Ich habe deklarieren var $ und nicht diese ref in Projekten, die jquery die d.ts Datei nicht haben. –

+0

Das ist die schnellste Möglichkeit, Unterstützung für jeden Typ hinzuzufügen, für den Sie keine .d.ts-Datei haben. Das Schöne an den Definitionsdateien ist, dass Sie Intellisense bekommen. –

+0

https://github.com/borisyankov/DefinitelyTyped –