mirror of
https://github.com/trezor/trezor-suite.git
synced 2026-02-21 01:02:39 +01:00
fix(utils): createDeferred arg and return type
This commit is contained in:
@@ -1,8 +1,23 @@
|
||||
export const createDeferred = <T, P = string | number | undefined>(id?: P) => {
|
||||
let localResolve: (t: T) => void = () => {};
|
||||
export interface Deferred<Resolve = void, Arg = string | number | undefined> {
|
||||
id: Arg;
|
||||
promise: Promise<Resolve>;
|
||||
resolve: (t: Resolve) => void;
|
||||
reject: (e: Error) => void;
|
||||
}
|
||||
|
||||
// unwrap promise response from Deferred
|
||||
export type DeferredResponse<D> = D extends Deferred<infer R> ? R : never;
|
||||
|
||||
interface CreateDeferred {
|
||||
<Resolve = void, Arg = undefined>(id?: Arg): Deferred<Resolve, Arg>;
|
||||
<Resolve = void, Arg = string | number>(id: Arg): Deferred<Resolve, Arg>;
|
||||
}
|
||||
|
||||
export const createDeferred: CreateDeferred = <Resolve, Arg>(id: Arg): Deferred<Resolve, Arg> => {
|
||||
let localResolve: (t: Resolve) => void = () => {};
|
||||
let localReject: (e?: Error) => void = () => {};
|
||||
|
||||
const promise: Promise<T> = new Promise((resolve, reject) => {
|
||||
const promise: Promise<Resolve> = new Promise((resolve, reject) => {
|
||||
localResolve = resolve;
|
||||
localReject = reject;
|
||||
});
|
||||
@@ -14,13 +29,3 @@ export const createDeferred = <T, P = string | number | undefined>(id?: P) => {
|
||||
promise,
|
||||
};
|
||||
};
|
||||
|
||||
export interface Deferred<T, P = string | number | undefined> {
|
||||
id: P;
|
||||
promise: Promise<T>;
|
||||
resolve: (t: T) => void;
|
||||
reject: (e: Error) => void;
|
||||
}
|
||||
|
||||
// unwrap promise response from Deferred
|
||||
export type DeferredResponse<D> = D extends Deferred<infer R> ? R : never;
|
||||
|
||||
Reference in New Issue
Block a user