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>; } }