我想创建一个我自己的类的单例,它依赖于 google-auth-library。
您可以像这样创建一个 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;
}
}
我该怎么做?
答案 0 :(得分:0)
我找到了答案,代码如下:
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;
}
}