/ / Esiste un modo per ereditare la firma del metodo con util.promisify su typescript? - javascript, node.js, dattiloscritto

C'è un modo per ereditare la firma del metodo con util.promisify su dattiloscritto? - javascript, node.js, dattiloscritto

Da v8.0.0 fornisce il nodo util.promisify () API. Ora sto cercando di convertire un metodo di callback in stile asincrono / wait. Sul dattiloscritto, util.promisify() potrebbe non ereditare la firma del metodo:

import fs = require("fs");

export namespace AsyncFs {
export const lstat = util.promisify(fs.lstat);
// there"s no method signature, only shows as "Function"
}

Sebbene possiamo aggiungere una nuova firma per ciascun metodo ...

export const lstat = util.promisify(fs.lstat) as (path: string | Buffer) => fs.Stats;

Quindi sto cercando un buon modo per ereditare le firme automaticamente. È possibile? Hai qualche buona idea?

Grazie.

risposte:

1 per risposta № 1

Se non gestito da TS internamente, probabilmente dovrai definire il tipo per util.promisify() te stesso facendo qualcosa di simile a cosa fanno per la funzione statica promisify () di Bluebird in DefinitelyTyped.

  static promisify<T>(func: (callback: (err: any, result: T) => void) => void, options?: Bluebird.PromisifyOptions): () => Bluebird<T>;
static promisify<T, A1>(func: (arg1: A1, callback: (err: any, result: T) => void) => void, options?: Bluebird.PromisifyOptions): (arg1: A1) => Bluebird<T>;
static promisify<T, A1, A2>(func: (arg1: A1, arg2: A2, callback: (err: any, result: T) => void) => void, options?: Bluebird.PromisifyOptions): (arg1: A1, arg2: A2) => Bluebird<T>;
static promisify<T, A1, A2, A3>(func: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, result: T) => void) => void, options?: Bluebird.PromisifyOptions): (arg1: A1, arg2: A2, arg3: A3) => Bluebird<T>;
static promisify<T, A1, A2, A3, A4>(func: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, result: T) => void) => void, options?: Bluebird.PromisifyOptions): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Bluebird<T>;
static promisify<T, A1, A2, A3, A4, A5>(func: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, result: T) => void) => void, options?: Bluebird.PromisifyOptions): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Bluebird<T>;