-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make batch method generic, similiar to Promise.all #14
Make batch method generic, similiar to Promise.all #14
Conversation
@vitaly-t First, thanks for pg-promise. It's great! One note about this PR: In my opinion, this definitely improves the type definitions for |
The goal of this commit is to improve the type definitions for the `batch` method so that it behaves more like `Promise.all`. Currently, when `batch` resolves it always resolves to an array with type `any[]` which means we've lost all type information about the values sent in. This commit aims to preserve the type information for arrays and tuples of length 2 through 10. Now: ```ts import Spex from './typescript/spex'; async function testTuples(s: Spex.ISpexBase) { const result = await s.batch(['1',Promise.resolve(2)]); const [a, b]: [string, number, boolean] = result; # IArrayExt duration value still works const duration: number = result.duration; // the above should behave same for tuples of length 2 through 10. // With more than 10 values, the result array items would all have // type string | number | boolean } async function testArbitraryLength(s: Spex.ISpexBase, toResolve: Promise<number | string>[]) { const result: Spex.IArrayExt<number | string> = await s.batch(toResolve); const duration: number = result.duration; } ``` Hardcoding 9 type definitions for tuples of length 2 through 10 is not particularly elegant. I do not know if there is a better way, but this seems to follow the [typescript definitions of Promise.all](https://github.com/microsoft/TypeScript/blob/2428ade1a91248e847f3e1561e31a9426650efee/src/lib/es2015.promise.d.ts).
9d66cae
to
169abe3
Compare
Use of |
In an existing codebase with significant usage of (I do think Anyway, Thanks, again, for pg-promise! |
Thanks! This has been released in v3.1.0. |
|
In |
The goal of this PR is to improve the type definitions for the
batch
method so that it behaves more likePromise.all
.Currently, when
batch
resolves it always resolves to an array with typeany[]
which means we've lost all type information about the values sent in.This PR aims to preserve the type information for arrays and tuples of length 2 through 10.
Now:
Hardcoding 9 type definitions for tuples of length 2 through 10 is not particularly elegant. I do not know if there is a better way, but this seems to follow the typescript definitions of Promise.all.