Come importare una libreria js senza file di definizione nel file typescript

Voglio passare da JavaScript a TypeScript per aiutare con la gestione del codice mentre il nostro progetto si ingrandisce. Utilizziamo, tuttavia, molte librerie come moduli amd, che non vogliamo convertire in TypeScript.

Vogliamo comunque importarli in file TypeScript, ma non vogliamo generare file di definizione. Come possiamo riuscirci?

ad esempio il nuovo file Typescript:

///  ///  import $ = require('jquery'); import alert = require('lib/errorInfoHandler'); 

Qui, lib/errorInfoHandler è un modulo amd incluso in un’enorme libreria JavaScript che non vogliamo toccare.

L’utilizzo del codice precedente produce i seguenti errori:

 Unable to resolve external module ''lib/errorInfoHandler'' Module cannot be aliased to a non-module type. 

Questo dovrebbe effettivamente produrre il seguente codice:

 define(["require", "exports", "jquery", "lib/errorInfoHandler"], function(require, exports, $, alert) { ... } 

C’è un modo per importare una libreria JavaScript in TypeScript come un modulo amd e usarlo all’interno del file TypeScript senza creare un file di definizione?

Una combinazione delle 2 risposte date qui ha funzionato per me.

 //errorInfoHandler.d.ts declare module "lib/errorInfoHandler" { var noTypeInfoYet: any; // any var name here really export = noTypeInfoYet; } 

Sono ancora nuovo in TypeScript ma sembra che questo sia solo un modo per dire a TypeScript di lasciare fuori esportando una variabile dummy senza informazioni di tipo su di esso.

MODIFICARE

È stato notato nei commenti per questa risposta che è ansible ottenere lo stesso risultato semplicemente dichiarando:

 //errorInfoHandler.d.ts declare module "*"; 

Vedi il commento github qui .

O crea il tuo file di definizione con il seguente contenuto:

 declare module "lib/errorInfoHandler" {} 

E fai riferimento a questo file in cui desideri utilizzare l’importazione.

Oppure aggiungi la seguente riga all’inizio del tuo file:

 ///  

Nota: non so se quest’ultimo funziona ancora, è come inizialmente ho lavorato con le dipendenze AMD mancanti. Si noti inoltre che con questo approccio non si avrà IntelliSense per quel file.

Crea un file in lib chiamato errorInfoHandler.d.ts . Lì, scrivi:

 var noTypeInfoYet: any; // any var name here really export = noTypeInfoYet; 

Ora l’importazione degli alert avrà successo e sarà di tipo any .