我从deno开始TypeScript,并尝试在我的POC之一中使用“静态”,但是它似乎并没有达到我的预期。
有人可以向我们解释为什么在下面的代码中getConn()似乎在从另一个类调用时实例化了一个新连接
import { Store, Id } from "./Store.ts";
import { Redis , connect } from "https://denopkg.com/keroxp/deno-redis/mod.ts";
export class RedisStore<T extends Id> extends Store<T>{
static conn?:Redis;
name:string;
constructor(name:string){
super();
this.name = name;
}
async getConn():Promise<Redis>{
if(RedisStore.conn == null || RedisStore.conn.isClosed){
RedisStore.conn = await connect({
hostname: "127.0.0.1",
port: 6379
});
}
return RedisStore.conn;
}
}
如果我在上课之前声明
const redisconn = await connect({
hostname: "127.0.0.1",
port: 6379
});
然后更改
async getConn():Promise<Redis>{ return redisconn }
显然,静态不像我期望的那样工作(就像在C#中一样),但我不知道怎么做。
RedisStore被实例化为一个单例(我尝试了不同的事情)
export class User extends DataObject<UserData> {
static store:Store<UserData>;
constructor(){
super();
if(!User.store){
User.store = new RedisStore<UserData>(User.name)
}
}
}
很抱歉,这个问题很简单,如果您有任何相关文档,也很高兴与您分享!