谷歌日历API - TypeScript类型

7
有人知道Google Calendar API (npm googleapis pkg)在node.js或浏览器中是否有可用的类型供TypeScript使用吗?这将允许在node或angular中采用强类型方法。我找不到@types/googleapis npm包,文档中也没有任何内容。欢迎任何建议。预先感谢您。--文档称其本地支持,无需单独安装包。文档-Typescript部分但是,当我按照文档所述尝试时,实际上并没有工作。
    import { google, calendar_v3 } from 'googleapis';

Typescript告诉我: [ts] 模块'"/home/me/myProject/functions/node_modules/googleapis/build/src/index"'没有导出成员'calendar_v3'。[2305]

当我查看googleapis/build/src/index.d.ts时,我看到GoogleApis指向../apis,其中包含所有的API,其中包括v3.d.ts文件和命名空间。

    * @namespace calendar
    * @type {Function}
    * @version v3
    * @variation v3

很明显,它在那里,但我错过了什么...但是什么呢? 如何在typescript中使用这个库? 一个例子会很受欢迎。

Philippe

3个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
9
@justin-beckwith的回答是正确的,但是获取类型也值得举个例子:

import { calendar_v3, google } from 'googleapis';
import { OAuth2Client, Credentials } from 'google-auth-library';
import Calendar = calendar_v3.Calendar;
import Schema$Event = calendar_v3.Schema$Event;

const auth: OAuth2Client = new google.auth.OAuth2(...);
const calendar: Calendar = google.calendar({ version: 'v3', auth });
const schemaEvent: Schema$Event = (await calendar.events.get({ calendarId, eventId })).data;

1
我在这里遇到的问题是,google.calendar()不接受JWT类型的auth,而使用服务帐户时需要该类型。 - Employee 451
有没有一个完整的示例来启动服务?我在基础知识上遇到了困难 - 首先是如何设置API密钥。接下来是:如何启动整个通信过程... - undefined
这行代码在使用import时无法编译,只能在使用require时才能正常工作。 const calendar = google.calendar({ version: 'v3', auth });Google的SDK和示例都一团糟。 - undefined

5

您可以绝对使用这个库与TypeScript。它是用TypeScript编写的!以下是一个基本示例:

import {google} from 'googleapis';
const calendar = google.calendar('v3');

这是获取特定API子部分引用的正确方法 :)

希望这能帮到您!


1
对我来说,问题在于google.calendar()不接受JWT类型的auth,而使用服务帐户时需要该类型。 - Employee 451
有没有一个完整的示例来说明如何启动服务?我在基础知识方面遇到了困难 - 首先是如何设置API密钥。接下来是:如何启动整个通信过程... - undefined

0

尝试按照Angular 6 – Google Drive Api v3 example的步骤进行操作,我也是通过这个教程将Google API集成到我的Angular应用程序中。需要注意的是,使用的不是@types/googleapis而是@types/gapi

npm install --save @types/gapi
npm install --save @types/gapi.auth2
npm install --save @types/gapi.client.drive

你需要调用 gapi.client.calendar 而不是 gapi.client.drive


2
谢谢droidBomb。根据Google的文档,gapi库应该用于浏览器。我正在寻找一个基于node.js的服务器实现。这里的文档说要使用googleapi。不过你的回答很有趣。 - philippe.kienner
droidBomb,你能让这个工作起来吗?如果可以的话,你能为我们放一个Codepen或JSFiddle之类的吗?谢谢! - MaxRocket
我不建议在node.js上使用客户端,反之亦然。但是如果客户端(浏览器)能够达成共识,那么在不久的将来大多数内容都可以在ES6/7上运行,这将是非常好的。 - Edward Chan JW

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,