我想创建一个依赖于googleauth库的自己类的单例。
您可以创建这样的oauthClient:
import { OAuth2Client } from "google-auth-library";
const OAuth2 = google.auth.OAuth2;
const getOauthClient = (
clientId: string,
clientSecret: string,
redirectUrl: string
): OAuth2Client => {
return new OAuth2(clientId, clientSecret, redirectUrl);
};
因此,我试图添加这个实例,如果您将getOauthClient调用到我的OauthClient类中,它将被创建,如下所示:
class OauthClient{
constructor(
clientId: string,
clientSecret: string,
redirectUrl: string
){
if(OauthClient._instance){
throw new Error("Cannot initialize singleton class using new");
}
}
private static _instance: OauthClient = getOauthClient(clientId, clientSecret, redirectUrl);
public static get instance(): OauthClient{
return OauthClient._instance;
}
}
我该怎么做?
我找到了答案,下面是代码:
import { OAuth2Client } from "google-auth-library";
const OAuth2 = google.auth.OAuth2;
class OauthClient{
constructor() {
throw new Error(
"Cannot initialize singleton class using new. Use OauthClient.getInstance instead"
);
}
private static instance: OauthClient;
public static getInstance(
clientId: string,
clientSecret: string,
redirectUrl: string
): OauthClient {
if(!OauthClient.instance){
this.instance = new OAuth2(
clientId,
clientSecret,
redirectUrl
);
}
return OauthClient.instance;
}
}