Ei pessoal,
Gostaria de saber como posso importar o arquivo rrule.js do typescript:
import 'rrule';
Não parece funcionar porque module.exports
é avaliado como verdadeiro, portanto, mesmo o escopo global não é preenchido.
Quando tento qualquer outro tipo de importação como:
import * as rrule from 'rrule';
Eu entendo isso ao compilar:
Error TS2307: Cannot find module 'rrule'.
Estou tendo o mesmo problema. Já encontrou uma solução?
Veja este exemplo:
http://jqfaq.com/how-to-use-external-js-in-typescript/
Consegui usar o RRule em meu arquivo ts desta forma (depois de incluir rrule.js em minha página index.html):
// Arquivo form.ts
declare var RRule: qualquer;
módulo myapp.controllers {
class myClass {
constructor() {
var rule = RRule.fromString('FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13');
console.log(rule.toText());
}
}
}
Espero que isso ajude alguém.
O que eu faço nesses casos é definir uma Digitação.
Adicionar um arquivo à digitação -> rrule.d.ts
conteúdo do arquivo rrule.d.ts:
declare var RRule: any;
declare var RRuleSet: any;
declare var rrulestr: any;
você pode estender suas propriedades lá, se quiser.
em seguida, vincule o rrule.d.ts a index.d.ts por exemplo (eu normalmente agrupo todos os meus d.ts em 1 arquivo referenciando-os lá)
index.d.ts:
/// <reference path="globals/rrule/rrule.d.ts" />
depois disso você pode usar
RRule.fromString('FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13');
sem definir o
declare var RRule: any;
em todos os lugares novamente.
Atenciosamente!
Executar npm install @types/rrule
resolveu o problema para mim. Eu fui capaz de importar assim
import { RRule, RRuleSet } from "rrule";
@ dennis2k e como você resolveu isso com rrulestr?
@uncledent , só fui capaz de fazer isso usando require
var rrulestr = require('rrule').rrulestr
@ dennis2k Obrigado por sua resposta, mas isso não pode ser usado em Angular4 :(
Eu poderia fazer isso no Angular2 / 4, não é bonito, mas funciona:
declare function require(name:string);
var rrulestr = require('rrule').rrulestr;
Acho que esse problema está morto. Atualize se for necessário mais suporte!
Comentários muito úteis
Executar
npm install @types/rrule
resolveu o problema para mim. Eu fui capaz de importar assimimport { RRule, RRuleSet } from "rrule";