TypeScript
Come utilizzare una libreria javascript senza un file di definizione del tipo
Ricerca…
introduzione
Mentre alcune librerie JavaScript esistenti hanno i file di definizione del tipo , ce ne sono molte che non lo fanno.
TypeScript offre un paio di modelli per gestire le dichiarazioni mancanti.
Dichiara un qualsiasi globale
A volte è più semplice dichiarare un globale di tipo any
, specialmente in progetti semplici.
Se jQuery non ha avuto dichiarazioni di tipo ( lo fa ), potresti metterlo
declare var $: any;
Ora qualsiasi utilizzo di $ verrà digitato any
.
Crea un modulo che esporta un valore predefinito
Per progetti più complicati, o nei casi in cui si intende digitare gradualmente una dipendenza, potrebbe essere più pulito creare un modulo.
Usando JQuery (anche se ha digitazioni disponibili ) come esempio:
// place in jquery.d.ts
declare let $: any;
export default $;
E poi in qualsiasi file nel tuo progetto, puoi importare questa definizione con:
// some other .ts file
import $ from "jquery";
Dopo questa importazione, $
verrà digitato come any
.
Se la libreria ha più variabili di primo livello, esporta e importa per nome:
// place in jquery.d.ts
declare module "jquery" {
let $: any;
let jQuery: any;
export { $ };
export { jQuery };
}
È quindi possibile importare e utilizzare entrambi i nomi:
// some other .ts file
import {$, jQuery} from "jquery";
$.doThing();
jQuery.doOtherThing();
Utilizzare un modulo ambientale
Se si desidera solo indicare l' intento di un'importazione (quindi non si desidera dichiarare un globale) ma non si desidera disturbare con definizioni esplicite, è possibile importare un modulo ambientale.
// in a declarations file (like declarations.d.ts)
declare module "jquery"; // note that there are no defined exports
È quindi possibile importare dal modulo ambientale.
// some other .ts file
import {$, jQuery} from "jquery";
Qualsiasi cosa importata dal modulo dichiarato (come $
e jQuery
) sopra sarà di tipo any