web-dev-qa-db-fra.com

Dans Angular 5, comment puis-je importer des modules NPM sans @types

J'essaie Angular 5, démarrer un projet à partir d'angular-cli. Dans ce projet, je voudrais utiliser un module NPM: J2M ( https://github.com/kylefarris/J2M ), donc j'ai regardé en ligne et j'ai vu ces deux commandes:

npm install j2m --save
npm install @types/j2m --save-dev

Malheureusement, @ types/j2m n'existe pas du tout. J'ai donc essayé de trouver un moyen de définir mes propres saisies mais je n'ai pas réussi à réussir ...

J'utilise ce code:

import * as J2M from "j2m";
...
console.log(J2M.toM(value));

Mais soit "j2m" n'est pas reconnu, soit "toM" n'est pas une fonction, d'après les échantillons que j'ai trouvés en ligne ...

Alors, quelle est la bonne façon d'importer ce module?

Merci,

6
ALansmanne

Vous devez ajouter les scripts dans votre angular-cli.json fichier.

Sous la propriété scripts, ajoutez

'../node_modules/path/to/minified/js.js'

Si un style est requis, vous devez également l'ajouter sous votre propriété styles, dans le même fichier.

Une fois que vous avez fait cela, votre bibliothèque est importée. Cela signifie que vous n'avez pas besoin d'utiliser des éléments tels que

import * from 'j2m';

Mais si vous souhaitez utiliser une variable globale sans vos erreurs IDE, vous devez ajouter

declare var J2M: any;

avec J2M étant la fonction globale exportée de votre bibliothèque (par exemple, pour MomentJS, cette variable est appelée moment).

Lorsque vous utilisez un fichier de définition, il indique simplement à la CLI de récupérer automatiquement la bibliothèque JS et vous donne IDE auto-complétion. Avec cette solution, vous n'avez pas de complétion automatique, et vous indiquez explicitement à la CLI où récupérer la bibliothèque.

15
user4676340