@@ -13,14 +13,14 @@ import {
13
13
notifyListeners ,
14
14
spyReportEnd ,
15
15
createInstanceofPredicate ,
16
+ makeIterable ,
16
17
hasInterceptors ,
17
18
interceptChange ,
18
19
IInterceptable ,
19
20
IInterceptor ,
20
21
registerInterceptor ,
21
22
checkIfStateModificationsAreAllowed ,
22
23
untracked ,
23
- makeIterable ,
24
24
transaction ,
25
25
isES6Set ,
26
26
IAtom ,
@@ -214,33 +214,33 @@ export class ObservableSet<T = any> implements Set<T>, IInterceptable<ISetWillCh
214
214
let nextIndex = 0
215
215
const keys = Array . from ( this . keys ( ) )
216
216
const values = Array . from ( this . values ( ) )
217
- return makeIterable < [ T , T ] > ( {
217
+ return makeIterableForSet < [ T , T ] > ( {
218
218
next ( ) {
219
219
const index = nextIndex
220
220
nextIndex += 1
221
221
return index < values . length
222
222
? { value : [ keys [ index ] , values [ index ] ] , done : false }
223
- : { done : true }
223
+ : { value : undefined , done : true }
224
224
}
225
- } as any )
225
+ } )
226
226
}
227
227
228
- keys ( ) : IterableIterator < T > {
228
+ keys ( ) : SetIterator < T > {
229
229
return this . values ( )
230
230
}
231
231
232
- values ( ) : IterableIterator < T > {
232
+ values ( ) : SetIterator < T > {
233
233
this . atom_ . reportObserved ( )
234
234
const self = this
235
235
let nextIndex = 0
236
236
const observableValues = Array . from ( this . data_ . values ( ) )
237
- return makeIterable < T > ( {
237
+ return makeIterableForSet ( {
238
238
next ( ) {
239
239
return nextIndex < observableValues . length
240
240
? { value : self . dehanceValue_ ( observableValues [ nextIndex ++ ] ) , done : false }
241
- : { done : true }
241
+ : { value : undefined , done : true }
242
242
}
243
- } as any )
243
+ } )
244
244
}
245
245
246
246
intersection < U > ( otherSet : ReadonlySetLike < U > | Set < U > ) : Set < T & U > {
@@ -343,3 +343,8 @@ export class ObservableSet<T = any> implements Set<T>, IInterceptable<ISetWillCh
343
343
export var isObservableSet = createInstanceofPredicate ( "ObservableSet" , ObservableSet ) as (
344
344
thing : any
345
345
) => thing is ObservableSet < any >
346
+
347
+ function makeIterableForSet < T > ( iterator : Iterator < T > ) : SetIterator < T > {
348
+ iterator [ Symbol . toStringTag ] = "SetIterator"
349
+ return makeIterable < T , BuiltinIteratorReturn > ( iterator )
350
+ }
0 commit comments