param不接受orderBy:'startTime'?
问题描述:
您好我正在写一个AngularJS的打字稿与谷歌API试图拨打电话获得谷歌日历事件,其语法是在文档中定义:https://developers.google.com/google-apps/calendar/v3/reference/events/list 但由于某些原因gapi.client.calendar.events.list(params)
param不接受orderBy:'startTime'?
不接受参数orderBy: 'startTime'
getCalendarEvents() {
return gapi.client.calendar.calendarList.list().then(response => {
let calendars = response.result.items;
if (calendars === undefined) return [];
console.log(calendars);
let requests = calendars.map(calendar => {
//let params = { calendarId: calendar.id, timeMin: (new Date()).toISOString(), showDeleted: false, singleEvents: true, maxResults: 10 };
let params = {
calendarId: calendar.id,
timeMin: (new Date()).toISOString(),
showDeleted: false,
singleEvents: true,
orderBy: 'startTime' };
return gapi.client.calendar.events.list(params).then(response => {
console.log(response.result.items);
let events: any = response.result.items.sort((a, b) => { // sorting array of events by date
if (a.start.date) a.start['newdate'] = a.start.date;
if (b.start.date) b.start['newdate'] = b.start.date;
if (a.start.dateTime) a.start['newdate'] = a.start.dateTime.slice(0, 10);
if (b.start.dateTime) b.start['newdate'] = b.start.dateTime.slice(0, 10);
if (a.start['newdate'] > b.start['newdate']) return 1;
if (a.start['newdate'] < b.start['newdate']) return -1;
return 0;
});
return events.map(event => {
let calendarEvent: CalendarEvent = {
title: event.summary,
htmlLink: event.htmlLink,
start: new Date(event.start.date == undefined ? event.start.dateTime == undefined ? '' : event.start.dateTime : event.start.date),
end: new Date(event.end.date == undefined ? event.end.dateTime == undefined ? '' : event.end.dateTime : event.end.date),
allDay: false,
color: calendar.backgroundColor
};
return calendarEvent;
});
});
});
return this.$q.all(requests);
});
}
为什么这不起作用?
文件: '文件:///d%3A/Projects/Homepage2/app/google.service.ts' 严重性: '错误' 信息: '类型的参数'{calendarId:字符串; timeMin:string; showDeleted:boolean; singleEvents:boolean; orderBy: stri ...'不可分配给类型为 'EventsListParameters'的参数。财产'orderBy'的类型是 不兼容。 类型'字符串'不可分配给类型'“startTime”| “更新”|不确定“”在: '166,61' 源: 'TS'
其中params为这样定义:
interface EventsListParameters {
calendarId: string;
alwaysIncludeEmail?: boolean;
iCalUID?: string;
maxAttendees?: integer;
maxResults?: integer;
orderBy?: EventsOrder;
pageToken?: string;
privateExtendedProperty?: string;
q?: string;
sharedExtendedProperty?: string;
showDeleted?: boolean;
showHiddenInvitations?: boolean;
singleEvents?: boolean;
syncToken?: SyncToken;
timeMax?: datetime;
timeMin?: datetime;
timeZone?: string;
updatedMin?: datetime;
}
和EventsOrder的定义如下:
type EventsOrder =
// Order by the start date/time (ascending). This is only available when querying single events (i.e. the parameter singleEvents is True)
'startTime' |
// Order by last modification time (ascending).
'updated';
答
修复
更改orderBy: 'startTime'
至orderBy: 'startTime' as 'startTime'
更多
它被推断为一个字符串。在这里,我用断言来迫使它被推断出一个字面意思。在类型断言
太感谢你了! – monstro