javascript - typescript, วิธีอ้างอิง OAuth2Client ที่ไม่ได้ถูกส่งออก? google-api-nodejs-client
ฉันกำลังพยายามทำตามบทเรียน https://developers.google.com/sheets/api/quickstart/nodejs ฉันกำลังใช้ typescript และฉันชอบคุณสมบัติการกำหนดชนิดและการเติมข้อความอัตโนมัติที่มันให้มา และฉันอยากจะเขียนตัวอย่างใหม่ใน typescript และแบบ async แทนการใช้ callback น่าเสียดายที่ฉันติดปัญหา OAuth2Client ในโค้ดของฉัน ฉันสร้างไคลเอนต์ oauth ภายในฟังก์ชันแบบนี้:
async function setupClient() {
const content: string = await fs.readFile("credentials.json", "utf8");
const credentials = JSON.parse(content);
// eslint-disable-next-line camelcase
const { client_secret, client_id, redirect_uris } = credentials.installed;
const oAuth2Client: o2 = new google.auth.OAuth2(
client_id,
client_secret,
redirect_uris[0]
);
type OAuth2Client = typeof oAuth2Client;
return oAuth2Client;
}
และฉันต้องการมอบหมายลูกค้านั้นให้กับฟังก์ชันการตั้งค่าอื่นสองฟังก์ชัน:
function setupAuthUrl(oAuth2Client, scopes) {
const authUrl = oAuth2Client.generateAuthUrl({
access_type: "offline",
scope: scopes,
});
return authUrl;
}
function setupToken(oAuth2Client, code) {
//code
}
แต่ฉันกำลังประสบปัญหาในการทำเครื่องหมายประเภท oauth2client เนื่องจากมันไม่ได้ถูกเปิดเผยโดยตรงโดยสิ่งใดสิ่งหนึ่ง? มีคนคาดว่ามันคงถูกเปิดเผยภายใต้ namespace 'oauth2_v2'? แต่ดูเหมือนว่าจะไม่ใช่
ฉันกำลังมองหาวิธีในการอ้างอิงประเภทนี้ก่อนการสร้างอินสแตนซ์ โดยเฉพาะอย่างยิ่งผ่านการนำเข้า น่าเศร้าที่เมื่อทำการติดตั้งไลบรารีนี้ผ่าน npm install googleapis มันไม่ได้ให้การขึ้นต่อกับทั้ง google-auth-library หรือ googleapis-common ซึ่งเป็นที่ที่มันถูกส่งออกและเปิดเผยเพื่อการนำเข้า eslint จะแสดงข้อผิดพลาดเว้นแต่จะมีการเพิ่มการขึ้นต่อ และฉันพยายามไม่เข้าใจว่าทำไมจึงจำเป็น เพราะประเภทนี้ควรสามารถเข้าถึงเพื่อการเติมโค้ดได้อย่างง่ายดาย
สำหรับการสร้างชื่อแทนประเภท:
type OAuth2Client = typeof GoogleApis.prototype.auth.OAuth2.prototype;
นี่คือทางเลือกเดียวที่ฉันสามารถคิดออกซึ่งไม่ส่งข้อผิดพลาด/คำเตือน (object as namespace) สำหรับการสร้าง alias นี่เป็นบรรทัดยาวและแปลกมากเช่นกันเมื่อมาจากภาษา OO อื่น ๆ
- TLDR: วิธีที่นิยมในการเข้าถึง OAuth2Client และอาจรวมถึงประเภทอื่น ๆ สำหรับการเติมโค้ดใน TypeScript คืออะไร?
คำตอบ #1
ณ วันที่ 19 มิถุนายน คำร้องในการรวมเพื่อเพิ่มคุณสมบัตินี้ได้รับการอนุมัติแล้ว https://github.com/googleapis/google-api-nodejs-client/issues/2208
import { google, Auth } from 'googleapis';
const oauthClient: Auth.OAuth2Client = new google.auth.OAuth2();
ขอบคุณ angelxmoreno สำหรับตัวอย่าง
