typescript Redis客户端在类的构造函数?



我有一个我想使用redis的typescript类,我的想法是在另一个模块中设置并连接到redis,并将其传递给构造函数,这样我也可以在单元测试中模拟redis客户端。就像这样:

redis.ts

import { createClient } from "redis";
import config from "../../config";
const redisClient = createClient({ url: config.redis_url });
redisClient.connect();
export default redisClient;

MyService.ts

export default class MyService {
private cacheClient: RedisClientType;

constructor(redisClient: RedisClientType) {
this.cacheClient = redisClient;
}
}

然后像这样使用:

import redisClient from "./redis"
import MyService from "./MyService"
const myService = new MyService(redisClient);

,但我得到一个错误,当我尝试这个。类型'redisClientType{…很多额外的东西……}不能赋值给'RedisClientType'类型的参数

我正在寻找一个使用redis与强类型typescript和mock的好例子,这将允许我更有效地进行单元测试。

我必须为Redis OM解决这个问题。我们欢迎您仔细研究代码,看看里面有什么。

对我来说关键的事情是当我调用.createClient.createCluster时,定义节点Redis返回的Redis连接的类型。我是这样做的:

/** A conventional Redis connection. */
export type RedisClientConnection = ReturnType<typeof createClient>
/** A clustered Redis connection. */
export type RedisClusterConnection = ReturnType<typeof createCluster>
/** A Redis connection, clustered or conventional. */
export type RedisConnection = RedisClientConnection | RedisClusterConnection

希望这对你有帮助!

相关内容

  • 没有找到相关文章

最新更新