Rrule: ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ

์— ๋งŒ๋“  2016๋…„ 07์›” 04์ผ  ยท  9์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: jakubroztocil/rrule

์–˜๋“ค ์•„,
typescript์—์„œ rrule.js ํŒŒ์ผ์„ ์–ด๋–ป๊ฒŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.
import 'rrule';
module.exports ๊ฐ€ true๋กœ ํ‰๊ฐ€๋˜์–ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์œผ๋ฏ€๋กœ ์ „์—ญ ๋ฒ”์œ„๋„ ์ฑ„์›Œ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์‹œ๋„ํ•  ๋•Œ:
import * as rrule from 'rrule';
๋‚˜๋Š” ์ด๊ฒƒ์„ ์ปดํŒŒ์ผ ํ•  ๋•Œ ์–ป๋Š”๋‹ค :
Error TS2307: Cannot find module 'rrule'.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

npm install @types/rrule ์‹คํ–‰ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด๋ ‡๊ฒŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
import { RRule, RRuleSet } from "rrule";

๋ชจ๋“  9 ๋Œ“๊ธ€

๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์€ ์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋‹ค์Œ ์˜ˆ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

http://jqfaq.com/how-to-use-external-js-in-typescript/

๋‚ด ts ํŒŒ์ผ์—์„œ RRule์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค(๋‚ด index.html ํŽ˜์ด์ง€์— rrule.js๋ฅผ ํฌํ•จ์‹œํ‚จ ํ›„).

// ํŒŒ์ผ 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๋ฅผ ์ฐธ์กฐํ•˜๋Š” 1๊ฐœ์˜ ํŒŒ์ผ๋กœ ๊ทธ๋ฃนํ™”ํ•ฉ๋‹ˆ๋‹ค)

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 ๊ทธ๋ฆฌ๊ณ 

@uncledent ๋‚˜๋Š”

var rrulestr = require('rrule').rrulestr

@dennis2k ๋‹ต๋ณ€ ๊ฐ์‚ฌ

Angular2/4์—์„œ ์ด๋Ÿฐ ์‹์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์˜ˆ์˜์ง€๋Š” ์•Š์ง€๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
declare function require(name:string); var rrulestr = require('rrule').rrulestr;

์ด ๋ฌธ์ œ๋Š” ์ฃฝ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ์ง€์›์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์—…๋ฐ์ดํŠธํ•˜์‹ญ์‹œ์˜ค!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰