مرحبا شباب،
كنت أتساءل كيف يمكنني استيراد ملف 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/
تمكنت من استخدام RRule في ملف ts الخاص بي مثل ذلك (بعد تضمين rrule.js في صفحة index.html الخاصة بي):
// ملف form.ts
تعلن var RRule: أي ؛
وحدة myapp.controllers {
class myClass {
constructor() {
var rule = RRule.fromString('FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13');
console.log(rule.toText());
}
}
}
أمل أن هذا يساعد شخصاما.
ما أفعله في هذه الحالات هو تحديد الكتابة.
أضف ملفًا إلى الكتابة -> 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 في ملف واحد للإشارة إليها هناك)
index.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 لم أتمكن من هذا إلا باستخدام يتطلب
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";