2012-12-06 16 views

Odpowiedz

22

Najprostszym sposobem jest po prostu declare funkcja używasz:

File1.js

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

File2.ts

declare function greet(): string; 

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

Jeśli Twój scenariusz to więcej com plex (tj. wiele plików odwołujących się do File1.js lub istnieje wiele funkcji w File1.js, które mogłyby zaśmiecać File2.ts), można utworzyć plik File1.dts i odnieść do pliku File2.ts:

File1. d.ts

function greet(): string; 

File2.ts

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

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

Cześć Ryan, dziękuję, to działa! Jeden plik, którego używam, ma jednak metody dodane do biblioteki Math. Zatem plik Math.uuid.js ma trzy metody; Math.uuid() zwraca ciąg, a dwa pozostałe ... TS narzeka na to "deklaruj funkcję Math.uuid(): string;" (oczywiście). W jaki sposób wprowadzę te metody? Dzięki! –

+2

Znaleziono! Ogłosiłem ten interfejs ... interface Math { uuid(): string; } i wszystko dobrze. –

+1

Czy istnieje sposób automatycznego wygenerowania pliku * .d.ts z pliku .js? Dzięki - dave –

2

tylko dla archiwów, jeśli dodać ref /// dla pliku JavaScript wewnątrz pliku TS, kompilator będzie próbował sprawdź cały kod w plikach JS i wyrzuć ogromną listę błędów. Wypróbuj za pomocą jQuery lub coś podobnego, a zobaczysz, co mam na myśli.

+0

Tak, widziałem to. Dodałem deklarację var $ i nie uwzględniam tego ref w projektach, które nie mają jquery pliku d.ts. –

+0

Jest to najszybszy sposób dodania wsparcia dla każdego typu, dla którego nie masz pliku .d.ts. Miłym akcentem w plikach definicji jest Intellisense. –

+0

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