Salut les gars,
Je me demandais comment puis-je importer le fichier rrule.js à partir de tapuscrit :
import 'rrule';
Ne semble pas fonctionner car module.exports
est évalué à true, donc même la portée globale n'est pas renseignée.
Lorsque j'essaie tout autre type d'importation comme :
import * as rrule from 'rrule';
J'obtiens ceci lors de la compilation :
Error TS2307: Cannot find module 'rrule'.
J'ai le même problème. Avez-vous déjà trouvé une solution ?
Voir cet exemple :
http://jqfaq.com/how-to-use-external-js-in-typescript/
J'ai pu utiliser RRule dans mon fichier ts comme ceci (après avoir inclus rrule.js dans ma page index.html):
// Fichier form.ts
déclarer var RRule : any ;
module myapp.controllers {
class myClass {
constructor() {
var rule = RRule.fromString('FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13');
console.log(rule.toText());
}
}
}
J'espère que cela aide quelqu'un.
Ce que je fais dans ce cas, c'est de définir un Typing.
Ajouter un fichier aux saisies -> rrule.d.ts
contenu du fichier rrule.d.ts :
declare var RRule: any;
declare var RRuleSet: any;
declare var rrulestr: any;
vous pouvez y étendre leurs propriétés si vous le souhaitez.
puis liez le rrule.d.ts à index.d.ts par exemple (je regroupe normalement tous mes d.ts dans 1 fichier les référençant là-bas)
index.d.ts :
/// <reference path="globals/rrule/rrule.d.ts" />
après cela, vous pouvez utiliser
RRule.fromString('FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13');
sans définir le
declare var RRule: any;
partout encore.
Meilleures salutations!
L'exécution de npm install @types/rrule
résolu le problème pour moi. J'ai ensuite pu importer comme ça
import { RRule, RRuleSet } from "rrule";
@dennis2k et comment l'avez-vous résolu avec rrulestr ?
@uncledent, je n'ai pu que cela en utilisant exiger
var rrulestr = require('rrule').rrulestr
@dennis2k Merci pour votre réponse, mais cela ne peut pas être utilisé dans Angular4 :(
Je pourrais le faire de cette façon dans Angular2/4, pas joli, mais ça marche :
declare function require(name:string);
var rrulestr = require('rrule').rrulestr;
Je pense que ce problème est mort. Veuillez mettre à jour si plus d'assistance est nécessaire !
Commentaire le plus utile
L'exécution de
npm install @types/rrule
résolu le problème pour moi. J'ai ensuite pu importer comme çaimport { RRule, RRuleSet } from "rrule";