File tree Expand file tree Collapse file tree 2 files changed +14
-4
lines changed Expand file tree Collapse file tree 2 files changed +14
-4
lines changed Original file line number Diff line number Diff line change @@ -53,7 +53,7 @@ export class Engine {
53
53
54
54
on ( eventName : "success" , handler : EventHandler ) : this;
55
55
on ( eventName : "failure" , handler : EventHandler ) : this;
56
- on ( eventName : string , handler : EventHandler ) : this;
56
+ on < T > ( eventName : string , handler : EventHandler < T > ) : this;
57
57
58
58
run ( facts ?: Record < string , any > , runOptions ?: RunOptions ) : Promise < EngineResult > ;
59
59
stop ( ) : this;
@@ -119,8 +119,8 @@ export interface Event {
119
119
120
120
export type PathResolver = ( value : object , path : string ) => any ;
121
121
122
- export type EventHandler = (
123
- event : Event ,
122
+ export type EventHandler < T = Event > = (
123
+ event : T ,
124
124
almanac : Almanac ,
125
125
ruleResult : RuleResult
126
126
) => void ;
Original file line number Diff line number Diff line change @@ -10,7 +10,8 @@ import rulesEngine, {
10
10
PathResolver ,
11
11
Rule ,
12
12
RuleProperties ,
13
- RuleSerializable
13
+ RuleSerializable ,
14
+ Event
14
15
} from "../" ;
15
16
16
17
// setup basic fixture data
@@ -93,6 +94,15 @@ expectType<Engine>(engine.addFact(fact));
93
94
expectType < Engine > ( engine . addFact ( dynamicFact ) ) ;
94
95
expectType < boolean > ( engine . removeFact ( fact ) ) ;
95
96
expectType < Fact < string > > ( engine . getFact < string > ( "test" ) ) ;
97
+ engine . on ( 'success' , ( event ) => {
98
+ expectType < Event > ( event )
99
+ } )
100
+ engine . on ( 'failure' , ( event ) => {
101
+ expectType < Event > ( event )
102
+ } )
103
+ engine . on < { foo : Array < string > } > ( 'foo' , ( event ) => {
104
+ expectType < { foo : Array < string > } > ( event )
105
+ } )
96
106
97
107
// Run the Engine
98
108
expectType < Promise < EngineResult > > ( engine . run ( { displayMessage : true } ) ) ;
You can’t perform that action at this time.
0 commit comments