@@ -103,42 +103,46 @@ export const transformNullableDoubleReply = {
103
103
3 : undefined as unknown as ( ) => DoubleReply | NullReply
104
104
} ;
105
105
106
- export function createTransformTuplesReplyFunc ( preserve ?: any , typeMapping ?: TypeMapping ) {
107
- return ( reply : ArrayReply < BlobStringReply > ) => {
108
- return transformTuplesReply ( reply , preserve , typeMapping ) ;
106
+ export interface Stringable {
107
+ toString ( ) : string ;
108
+ }
109
+
110
+ export function createTransformTuplesReplyFunc < T extends Stringable > ( preserve ?: any , typeMapping ?: TypeMapping ) {
111
+ return ( reply : ArrayReply < T > ) => {
112
+ return transformTuplesReply < T > ( reply , preserve , typeMapping ) ;
109
113
} ;
110
114
}
111
115
112
- export function transformTuplesReply (
113
- reply : ArrayReply < BlobStringReply > ,
116
+ export function transformTuplesReply < T extends Stringable > (
117
+ reply : ArrayReply < T > ,
114
118
preserve ?: any ,
115
119
typeMapping ?: TypeMapping
116
- ) : MapReply < BlobStringReply , BlobStringReply > {
120
+ ) : MapReply < T , T > {
117
121
const mapType = typeMapping ? typeMapping [ RESP_TYPES . MAP ] : undefined ;
118
122
119
123
const inferred = reply as unknown as UnwrapReply < typeof reply >
120
124
121
125
switch ( mapType ) {
122
126
case Array : {
123
- return reply as unknown as MapReply < BlobStringReply , BlobStringReply > ;
127
+ return reply as unknown as MapReply < T , T > ;
124
128
}
125
129
case Map : {
126
130
const ret = new Map < string , BlobStringReply > ;
127
131
128
132
for ( let i = 0 ; i < inferred . length ; i += 2 ) {
129
- ret . set ( inferred [ i ] . toString ( ) , inferred [ i + 1 ] ) ;
133
+ ret . set ( inferred [ i ] . toString ( ) , inferred [ i + 1 ] as any ) ;
130
134
}
131
135
132
- return ret as unknown as MapReply < BlobStringReply , BlobStringReply > ; ;
136
+ return ret as unknown as MapReply < T , T > ; ;
133
137
}
134
138
default : {
135
139
const ret : Record < string , BlobStringReply > = Object . create ( null ) ;
136
140
137
141
for ( let i = 0 ; i < inferred . length ; i += 2 ) {
138
- ret [ inferred [ i ] . toString ( ) ] = inferred [ i + 1 ] ;
142
+ ret [ inferred [ i ] . toString ( ) ] = inferred [ i + 1 ] as any ;
139
143
}
140
144
141
- return ret as unknown as MapReply < BlobStringReply , BlobStringReply > ; ;
145
+ return ret as unknown as MapReply < T , T > ; ;
142
146
}
143
147
}
144
148
}
0 commit comments