2012-12-06 19 views

risposta

22

Il modo più semplice è quello di appena declare la funzione che si sta utilizzando:

File1.js

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

File2.ts

declare function greet(): string; 

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

Se il tuo scenario è più com plex (cioè più file che fanno riferimento a File1.js o ci sono molte funzioni in File1.js che ingombrano File2.ts, puoi creare un file File1.d.ts e fare riferimento a quello da File2.ts:

File1. d.tS

function greet(): string; 

File2.ts

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

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

Ciao Ryan, grazie funziona! Un file che uso tuttavia ha metodi aggiunti alla libreria Math. Quindi il file Math.uuid.js ha tre metodi; Math.uuid() restituisce la stringa e altri due ... TS si lamenta con questa "declare function Math.uuid(): string;" (ovviamente). Come porterei questi metodi? Grazie! –

+2

Trovato! Ho dichiarato questa interfaccia ... interface Math { uuid(): string; } e va tutto bene. –

+1

C'è un modo per generare automaticamente un file * .d.ts dal file .js? Grazie - dave –

2

Solo per gli archivi, se si aggiunge un ref /// per un file JavaScript all'interno del vostro file di TS, il compilatore cercherà di convalidare tutto il codice nei file JS e lanciare un elenco di errori enorme. Provalo con jQuery o qualcosa del genere e vedrai cosa intendo.

+0

Sì, l'ho visto. Metto in modo di dichiarare var $ e non includere tale riferimento nei progetti che non hanno jquery nel file d.ts. –

+0

Questo è il modo più rapido per aggiungere supporto per qualsiasi tipo per cui non si dispone di un file .d.ts. La cosa bella dei file di definizione è che ottieni Intellisense. –

+0

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