TypeScript
Comment utiliser une bibliothèque javascript sans fichier de définition de type
Recherche…
Introduction
Alors que certaines bibliothèques JavaScript existantes ont des fichiers de définition de type , beaucoup ne le font pas.
TypeScript propose quelques modèles pour gérer les déclarations manquantes.
Déclarer un tout global
Il est parfois plus simple de simplement déclarer un global de type any
, en particulier dans les projets simples.
Si jQuery n’avait pas de déclaration de type ( c’est le cas ), vous pouvez mettre
declare var $: any;
Maintenant , toute utilisation de $ sera tapé any
.
Faire un module qui exporte une valeur par défaut
Pour les projets plus compliqués ou dans les cas où vous avez l'intention de taper progressivement une dépendance, il peut être plus propre de créer un module.
En utilisant JQuery (bien que des typages soient disponibles ) comme exemple:
// place in jquery.d.ts
declare let $: any;
export default $;
Et puis, dans n'importe quel fichier de votre projet, vous pouvez importer cette définition avec:
// some other .ts file
import $ from "jquery";
Après cette importation, $
sera saisi comme any
.
Si la bibliothèque contient plusieurs variables de niveau supérieur, exportez-les et importez-les par nom à la place:
// place in jquery.d.ts
declare module "jquery" {
let $: any;
let jQuery: any;
export { $ };
export { jQuery };
}
Vous pouvez ensuite importer et utiliser les deux noms:
// some other .ts file
import {$, jQuery} from "jquery";
$.doThing();
jQuery.doOtherThing();
Utiliser un module d'ambiance
Si vous voulez simplement indiquer l' intention d'une importation (afin de ne pas vouloir déclarer un global) mais que vous ne souhaitez pas avoir de définitions explicites, vous pouvez importer un module ambient.
// in a declarations file (like declarations.d.ts)
declare module "jquery"; // note that there are no defined exports
Vous pouvez ensuite importer depuis le module ambient.
// some other .ts file
import {$, jQuery} from "jquery";
Tout ce qui est importé du module déclaré (comme $
et jQuery
) ci-dessus sera de type any