Skip to content

Commit b85a399

Browse files
Merge pull request #45 from elchukc/type-enhancements
Dynamic return types using generics
2 parents f62dce2 + d2cfac6 commit b85a399

File tree

2 files changed

+14
-13
lines changed

2 files changed

+14
-13
lines changed

lib/index.d.ts

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -226,26 +226,28 @@ declare module 'geocodio-library-node' {
226226
formatted_address: string;
227227
};
228228
results: GeocodedAddress[];
229+
_warnings?: string[];
229230
}
230231

231-
export interface BatchGeocodeResponse {
232-
results: Array<{
233-
query: string;
232+
export interface BatchGeocodeResponse<Q extends string | AddressInputComponents, T extends Array<Q> | Record<string, Q>> {
233+
results: T extends Array<Q> ? Array<{
234+
query: Q;
234235
response: SingleGeocodeResponse;
235-
}> | Record<string, {
236+
}> : Record<keyof T, {
236237
response: SingleGeocodeResponse;
237238
}>;
238239
}
239240

240241
export interface ReverseGeocodeResponse {
241242
results: GeocodedAddress[];
243+
_warnings?: string[];
242244
}
243245

244-
export interface BatchReverseGeocodeResponse {
245-
results: Array<{
246-
query: string;
246+
export interface BatchReverseGeocodeResponse<Q extends string | [number, number], T extends Array<Q> | Record<string, Q>> {
247+
results: T extends Array<Q> ? Array<{
248+
query: Q;
247249
response: ReverseGeocodeResponse;
248-
}> | Record<string, {
250+
}> : Record<keyof T, {
249251
response: ReverseGeocodeResponse;
250252
}>;
251253
}
@@ -262,10 +264,9 @@ declare module 'geocodio-library-node' {
262264
constructor(apiKey?: string, hostname?: string, apiVersion?: string);
263265

264266
geocode(query: string | AddressInputComponents, fields?: FieldOption[], limit?: number): Promise<SingleGeocodeResponse>;
265-
geocode(query: (string | AddressInputComponents)[] | Record<string, string | AddressInputComponents>, fields?: FieldOption[], limit?: number): Promise<BatchGeocodeResponse>;
266-
267+
geocode<Q extends string | AddressInputComponents, T extends Array<Q> | Record<string, Q>>(query: T, fields?: FieldOption[], limit?: number): Promise<BatchGeocodeResponse<Q, T>>;
267268
reverse(query: string | [number, number], fields?: FieldOption[], limit?: number): Promise<ReverseGeocodeResponse>;
268-
reverse(query: (string | [number, number])[] | Record<string, string | [number, number]>, fields?: FieldOption[], limit?: number): Promise<BatchReverseGeocodeResponse>;
269+
reverse<Q extends string | [number, number], T extends Array<Q> | Record<string, Q>>(query: T, fields?: FieldOption[], limit?: number): Promise<BatchReverseGeocodeResponse<Q, T>>;
269270

270271
list: {
271272
create(filename: string, direction: string, format: string, callback: string): Promise<ListResponse>;

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)