1
1
export type RemoteData < E , D > = Initialized | Pending | Failure < E > | Success < D > ;
2
2
3
+ export enum Kinds {
4
+ Initialized = 'Initialized' ,
5
+ Pending = 'Pending' ,
6
+ Failure = 'Failure' ,
7
+ Success = 'Success' ,
8
+ }
9
+
3
10
export class Initialized {
4
- private kind = ' Initialized' ;
11
+ public kind : typeof Kinds . Initialized = Kinds . Initialized ;
5
12
}
6
13
7
14
export class Pending {
8
- private kind = ' Pending' ;
15
+ public kind : typeof Kinds . Pending = Kinds . Pending ;
9
16
}
10
17
11
- export class Success < D > {
12
- private kind = 'Success' ;
18
+ export class Failure < E > {
19
+ public kind : typeof Kinds . Failure = Kinds . Failure ;
13
20
14
- constructor ( public data : D ) {
15
- if ( data === null || data === undefined ) {
16
- fail ( 'Parameter "data " is required' ) ;
21
+ constructor ( public error : E ) {
22
+ if ( error === null || error === undefined ) {
23
+ fail ( 'Parameter "error " is required' ) ;
17
24
}
18
25
}
19
26
}
20
27
21
- export class Failure < E > {
22
- private kind = 'Failure' ;
28
+ export class Success < D > {
29
+ public kind : typeof Kinds . Success = Kinds . Success ;
23
30
24
- constructor ( public error : E ) {
25
- if ( error === null || error === undefined ) {
26
- fail ( 'Parameter "error " is required' ) ;
31
+ constructor ( public data : D ) {
32
+ if ( data === null || data === undefined ) {
33
+ fail ( 'Parameter "data " is required' ) ;
27
34
}
28
35
}
29
36
}
@@ -35,16 +42,17 @@ export function fold<T, E, D>(
35
42
success : ( data : D ) => T ,
36
43
) : ( state : RemoteData < E , D > ) => T {
37
44
return ( state : RemoteData < E , D > ) => {
38
- if ( state instanceof Initialized ) {
39
- return initialized ( ) ;
40
- } else if ( state instanceof Pending ) {
41
- return pending ( ) ;
42
- } else if ( state instanceof Success ) {
43
- return success ( state . data ) ;
44
- } else if ( state instanceof Failure ) {
45
- return failure ( state . error ) ;
46
- } else {
47
- return fail ( 'Unknown RemoteData type used' ) ;
45
+ switch ( state . kind ) {
46
+ case Kinds . Initialized :
47
+ return initialized ( ) ;
48
+ case Kinds . Pending :
49
+ return pending ( ) ;
50
+ case Kinds . Failure :
51
+ return failure ( state . error ) ;
52
+ case Kinds . Success :
53
+ return success ( state . data ) ;
54
+ default :
55
+ return fail ( 'Unknown RemoteData type used' ) ;
48
56
}
49
57
}
50
58
}
0 commit comments