Hola chicos,
Me preguntaba cómo puedo importar el archivo rrule.js desde mecanografiado:
import 'rrule';
No parece funcionar porque module.exports
se evalúa como verdadero, por lo que incluso el ámbito global no se completa.
Cuando intento cualquier otro tipo de importación como:
import * as rrule from 'rrule';
Obtengo esto al compilar:
Error TS2307: Cannot find module 'rrule'.
Tengo el mismo problema. ¿Alguna vez has encontrado una solución?
Vea este ejemplo:
http://jqfaq.com/how-to-use-external-js-in-typescript/
Pude usar RRule en mi archivo ts así (después de incluir rrule.js en mi página index.html):
// Archivo form.ts
declare var RRule: any;
módulo myapp.controllers {
class myClass {
constructor() {
var rule = RRule.fromString('FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13');
console.log(rule.toText());
}
}
}
Espero que esto ayude a alguien.
Lo que hago en estos casos es definir un Typing.
Agregue un archivo a mecanografiado -> rrule.d.ts
contenido del archivo rrule.d.ts:
declare var RRule: any;
declare var RRuleSet: any;
declare var rrulestr: any;
puede ampliar sus propiedades allí si lo desea.
luego vincule el rrule.d.ts a index.d.ts por ejemplo (normalmente agrupo todos mis d.ts en 1 archivo haciendo referencia a ellos allí)
index.d.ts:
/// <reference path="globals/rrule/rrule.d.ts" />
después de eso puedes usar
RRule.fromString('FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13');
sin definir el
declare var RRule: any;
en todas partes de nuevo.
¡Atentamente!
Ejecutar npm install @types/rrule
solucionó el problema. Entonces pude importar así
import { RRule, RRuleSet } from "rrule";
@ dennis2k y ¿cómo lo has resuelto con rrulestr?
@uncledent Solo pude hacer esto usando require
var rrulestr = require('rrule').rrulestr
@ dennis2k Gracias por su respuesta, pero esto no se puede usar en Angular4 :(
Podría hacer esto de esta manera en Angular2 / 4, no es bonito, pero funciona:
declare function require(name:string);
var rrulestr = require('rrule').rrulestr;
Creo que este problema está muerto. ¡Actualice si necesita más soporte!
Comentario más útil
Ejecutar
npm install @types/rrule
solucionó el problema. Entonces pude importar asíimport { RRule, RRuleSet } from "rrule";