@@ -183,36 +183,38 @@ export class IterableResult<T> {
183
183
return this . flatMap ( ( value ) => IterableResult . single ( mapper ( value ) ) ) ;
184
184
}
185
185
flatMap < U > ( mapper : ( value : T ) => IterableResult < U > ) : IterableResult < U > {
186
- const iterable = this . iterable ;
187
- return new IterableResult ( function * ( ) {
188
- const errors : Array < ResultError > = [ ] ;
189
- let yielded = false ;
190
- for ( const result of iterable ( ) ) {
191
- switch ( result . type ) {
192
- case "value" : {
193
- const more = IterableResult . from ( ( ) => mapper ( result . value ) ) ;
194
- for ( const result of more . iterable ( ) ) {
195
- switch ( result . type ) {
196
- case "value" :
197
- yielded = false ;
198
- yield result ;
199
- break ;
200
- case "error" :
201
- errors . push ( result . error ) ;
186
+ return new IterableResult (
187
+ function * ( this : IterableResult < T > ) : Generator < Result < U > > {
188
+ const errors : Array < ResultError > = [ ] ;
189
+ let yielded = false ;
190
+ for ( const result of this . iterable ( ) ) {
191
+ switch ( result . type ) {
192
+ case "value" : {
193
+ const more = IterableResult . from ( ( ) => mapper ( result . value ) ) ;
194
+ for ( const result of more . iterable ( ) ) {
195
+ switch ( result . type ) {
196
+ case "value" :
197
+ yielded = false ;
198
+ yield result ;
199
+ break ;
200
+ case "error" :
201
+ errors . push ( result . error ) ;
202
+ }
202
203
}
204
+ break ;
203
205
}
204
- break ;
206
+ case "error" :
207
+ yield result ;
205
208
}
206
- case "error" :
207
- yield result ;
208
209
}
209
- }
210
- if ( ! yielded ) {
211
- for ( const error of errors ) {
212
- yield { type : "error" , error } ;
210
+ if ( ! yielded ) {
211
+ for ( const error of errors ) {
212
+ yield { type : "error" , error } ;
213
+ }
213
214
}
214
215
}
215
- } ) ;
216
+ . bind ( this ) ,
217
+ ) ;
216
218
}
217
219
filterMap < U > ( mapper : ( value : T ) => U ) : IterableResult < NonNullable < U > > {
218
220
return this . flatMap ( ( value ) => {
@@ -225,17 +227,19 @@ export class IterableResult<T> {
225
227
} ) ;
226
228
}
227
229
addErrorWhenNone ( error : ( ) => ResultError ) : IterableResult < T > {
228
- const iterable = this . iterable ;
229
- return new IterableResult ( function * ( ) {
230
- let yielded = false ;
231
- for ( const result of iterable ( ) ) {
232
- yielded = true ;
233
- yield result ;
234
- }
235
- if ( ! yielded ) {
236
- yield { type : "error" , error : error ( ) } ;
230
+ return new IterableResult (
231
+ function * ( this : IterableResult < T > ) : Generator < Result < T > > {
232
+ let yielded = false ;
233
+ for ( const result of this . iterable ( ) ) {
234
+ yielded = true ;
235
+ yield result ;
236
+ }
237
+ if ( ! yielded ) {
238
+ yield { type : "error" , error : error ( ) } ;
239
+ }
237
240
}
238
- } ) ;
241
+ . bind ( this ) ,
242
+ ) ;
239
243
}
240
244
static concat < T > (
241
245
...iterableResults : ReadonlyArray < IterableResult < T > >
@@ -282,7 +286,7 @@ export class IterableResult<T> {
282
286
for ( const rightResult of right . iterable ( ) ) {
283
287
switch ( rightResult . type ) {
284
288
case "value" : {
285
- const right = rightResult . value ;
289
+ const { value : right } = rightResult ;
286
290
rightAggregate . push ( right ) ;
287
291
yielded = true ;
288
292
yield {
0 commit comments