大家好,
我想知道如何从打字稿导入 rrule.js 文件:
import 'rrule';
似乎不起作用,因为module.exports
被评估为真,所以甚至没有填充全局范围。
当我尝试任何其他类型的导入时:
import * as rrule from 'rrule';
我在编译时得到这个:
Error TS2307: Cannot find module 'rrule'.
我有同样的问题。 有没有找到解决办法?
看这个例子:
http://jqfaq.com/how-to-use-external-js-in-typescript/
我能够像这样在我的 ts 文件中使用 RRule(在我的 index.html 页面中包含 rrule.js 之后):
// 文件 form.ts
声明 var RRule: any;
模块 myapp.controllers {
class myClass {
constructor() {
var rule = RRule.fromString('FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13');
console.log(rule.toText());
}
}
}
希望这可以帮助某人。
在这种情况下,我所做的是定义一个 Typing。
将文件添加到typings -> rrule.d.ts
rrule.d.ts 文件的内容:
declare var RRule: any;
declare var RRuleSet: any;
declare var rrulestr: any;
如果你愿意,你可以在那里扩展他们的属性。
然后将 rrule.d.ts 链接到每个示例的 index.d.ts(我通常将我所有的 d.ts 分组在 1 个文件中,在那里引用它们)
索引.d.ts:
/// <reference path="globals/rrule/rrule.d.ts" />
之后你可以使用
RRule.fromString('FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13');
没有定义declare var RRule: any;
再次到处。
此致!
运行npm install @types/rrule
为我解决了这个问题。 然后我就可以像这样导入import { RRule, RRuleSet } from "rrule";
@dennis2k ,你是如何用 rrulestr 解决的?
@uncledent我只能使用 require
var rrulestr = require('rrule').rrulestr
@dennis2k谢谢你的回答,但这不能在 Angular4 中使用:(
我可以在 Angular2/4 中这样做,不漂亮,但有效:
declare function require(name:string);
var rrulestr = require('rrule').rrulestr;
我认为这个问题已经死了。 如果需要更多支持,请更新!
最有用的评论
运行
npm install @types/rrule
为我解决了这个问题。 然后我就可以像这样导入import { RRule, RRuleSet } from "rrule";