@@ -13,14 +13,14 @@ import {
1313 notifyListeners ,
1414 spyReportEnd ,
1515 createInstanceofPredicate ,
16+ makeIterable ,
1617 hasInterceptors ,
1718 interceptChange ,
1819 IInterceptable ,
1920 IInterceptor ,
2021 registerInterceptor ,
2122 checkIfStateModificationsAreAllowed ,
2223 untracked ,
23- makeIterable ,
2424 transaction ,
2525 isES6Set ,
2626 IAtom ,
@@ -214,33 +214,33 @@ export class ObservableSet<T = any> implements Set<T>, IInterceptable<ISetWillCh
214214 let nextIndex = 0
215215 const keys = Array . from ( this . keys ( ) )
216216 const values = Array . from ( this . values ( ) )
217- return makeIterable < [ T , T ] > ( {
217+ return makeIterableForSet < [ T , T ] > ( {
218218 next ( ) {
219219 const index = nextIndex
220220 nextIndex += 1
221221 return index < values . length
222222 ? { value : [ keys [ index ] , values [ index ] ] , done : false }
223- : { done : true }
223+ : { value : undefined , done : true }
224224 }
225- } as any )
225+ } )
226226 }
227227
228- keys ( ) : IterableIterator < T > {
228+ keys ( ) : SetIterator < T > {
229229 return this . values ( )
230230 }
231231
232- values ( ) : IterableIterator < T > {
232+ values ( ) : SetIterator < T > {
233233 this . atom_ . reportObserved ( )
234234 const self = this
235235 let nextIndex = 0
236236 const observableValues = Array . from ( this . data_ . values ( ) )
237- return makeIterable < T > ( {
237+ return makeIterableForSet ( {
238238 next ( ) {
239239 return nextIndex < observableValues . length
240240 ? { value : self . dehanceValue_ ( observableValues [ nextIndex ++ ] ) , done : false }
241- : { done : true }
241+ : { value : undefined , done : true }
242242 }
243- } as any )
243+ } )
244244 }
245245
246246 intersection < U > ( otherSet : ReadonlySetLike < U > | Set < U > ) : Set < T & U > {
@@ -343,3 +343,8 @@ export class ObservableSet<T = any> implements Set<T>, IInterceptable<ISetWillCh
343343export var isObservableSet = createInstanceofPredicate ( "ObservableSet" , ObservableSet ) as (
344344 thing : any
345345) => 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