1
- #!/usr/bin/env ts-node
1
+ #!/usr/bin/env -S node --no-warnings --loader ts-node/esm
2
2
3
3
import { test } from 'tstest'
4
4
5
- import { AsyncMapLike } from './async-map-like'
5
+ import type { AsyncMapLike } from './async-map-like.js '
6
6
7
7
test ( 'AsyncMapLike Interface via object' , async ( t ) => {
8
8
const mapCollection = {
@@ -23,10 +23,10 @@ test('AsyncMapLike Interface via object', async (t) => {
23
23
}
24
24
25
25
const mapIterable = {
26
- [ Symbol . iterator ] : ( ) : AsyncIterableIterator < [ any , any ] > => { return { } as any } ,
27
26
entries : ( ) : AsyncIterableIterator < [ any , any ] > => { return { } as any } ,
28
27
keys : () : AsyncIterableIterator< any > => { return { } as any } ,
29
28
values : ( ) : AsyncIterableIterator < any > => { return { } as any } ,
29
+ [ Symbol . asyncIterator ] : ( ) : AsyncIterableIterator < [ any , any ] > => { return { } as any } ,
30
30
}
31
31
32
32
const mapLike : AsyncMapLike < any , any > = {
@@ -67,12 +67,10 @@ test('AsyncMapLike Interface via class', async (t) => {
67
67
/**
68
68
* Iterables
69
69
*/
70
- [ Symbol . iterator ] ( ) : AsyncIterableIterator < [ string , number ] > { return { } as any }
71
70
entries ( ) : AsyncIterableIterator < [ string , number ] > { return { } as any }
72
71
keys ( ) : AsyncIterableIterator < string > { return { } as any }
73
72
values ( ) : AsyncIterableIterator < number > { return { } as any }
74
-
75
- get [ Symbol . toStringTag ] ( ) { return 'test' }
73
+ [ Symbol . asyncIterator ] ( ) : AsyncIterableIterator < [ any , any ] > { return { } as any }
76
74
77
75
}
78
76
@@ -108,17 +106,25 @@ test('AsyncMapLike Interface via class generic', async (t) => {
108
106
get size ( ) { return Promise . resolve ( 42 ) }
109
107
110
108
/**
111
- * Iterables
109
+ * AsyncIterables
112
110
*/
113
- [ Symbol . iterator ] ( ) : AsyncIterableIterator < [ K , V ] > { return { } as any }
114
111
entries ( ) : AsyncIterableIterator < [ K , V ] > { return { } as any }
115
112
keys ( ) : AsyncIterableIterator < K > { return { } as any }
116
113
values ( ) : AsyncIterableIterator < V > { return { } as any }
117
-
118
- get [ Symbol . toStringTag ] ( ) { return 'test' }
114
+ [ Symbol . asyncIterator ] ( ) : AsyncIterableIterator < [ any , any ] > {
115
+ return {
116
+ [ Symbol . asyncIterator ] : this [ Symbol . asyncIterator ] ,
117
+ next : ( ) => Promise . resolve ( { done : true , value : undefined } ) ,
118
+ }
119
+ }
119
120
120
121
}
121
122
122
123
const mapLike = new TestAsyncMapLike < string , number > ( )
123
124
t . ok ( mapLike , 'should be implement-able from AsyncMapLike' )
125
+
126
+ /**
127
+ * Just check for the types
128
+ */
129
+ for await ( const kv of mapLike ) { void kv }
124
130
} )
0 commit comments