Comment traiter correctement avec promisifyAll en dactylographie?

Considérez le code suivant:

import redis = require('redis'); //Has ambient declaration from DT import bluebird = require('bluebird'); //Has ambient declaration from DT bluebird.promisifyAll((<any>redis).RedisClient.prototype); bluebird.promisifyAll((<any>redis).Multi.prototype); const client = redis.createClient(); client.getAsync('foo').then(function(res) { console.log(res); }); 

getAsync va getAsync parce qu'il est créé à la volée et n'est pas défini dans aucun fichier .d.ts . Alors, quelle est la bonne façon de gérer cela?

En outre, même si j'ai les fichiers .d.ts chargés pour les redis, j'ai encore besoin de redis pour être utilisé pour promisifyAll . Sinon, cela renversera l'erreur:

 Property 'RedisClient' does not exist on type 'typeof "redis"' 

Est-ce que vous tapez sur le seul moyen facile?

Je setAsync ceci par déclaration fusionnant les méthodes setAsync & getAsync . J'ai ajouté le code suivant dans mon propre fichier .d.ts personnalisé.

 declare module "redis" { export interface RedisClient extends NodeJS.EventEmitter { setAsync(key:string, value:string): Promise<void>; getAsync(key:string): Promise<string>; } }