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'

更多

它被推断为一个字符串。在这里,我用断言来迫使它被推断出一个字面意思。在类型断言

+0

太感谢你了! – monstro