在TypeScript中声明数组索引

4

我有这个AjaxResponse接口:

interface AjaxResponse {
    calendar: {
        dates: {
            date: string,
            hours: {
                hour: string,
                id: number,
                status: string,
                client: {
                    name: string,
                    surname: string,
                    email: string,
                    phone: string,
                    id: number
                }
            }[]
        }[]
    },
    rights: string,
    listenerUrl: string
}

我将遍历一个日期列表并编辑其中的一些日期:
let dates: AjaxResponse['calendar']['dates']
let i: number
let l: number

    receive(response: AjaxResponse) {
                dates = response.calendar.dates
                l = dates.length
                for (i; i < l; i++) {
                    calendar.editDates(dates[i])
                }

编辑日期功能如下:
editDates(newDate: AjaxResponse['calendar']['dates']) {
    }
dates[i]无法编译,因为我的最后一个函数在期望一个数组。我怎样才能在最后一个函数中声明单个日期而不是日期列表?
编辑:通过创建两个接口找到了解决方法:
interface AjaxResponse {
    calendar: {
        dates: AjaxResponseDate[]
    },
    rights: string,
    listenerUrl: string
}

interface AjaxResponseDate {
    date: string,
    hours: {
        hour: string,
        id: number,
        status: string,
        client: {
            name: string,
            surname: string,
            email: string,
            phone: string,
            id: number
        }
    }
}
1个回答

3

要获取数组中项的类型,可以通过 number 类型查询:

function editDates(newDate: AjaxResponse['calendar']['dates'][number]) {
}

如果需要,可以使用具有t个接口的解决方案,但是如果您愿意,也可以保持单一类型。


可以使用两种方式,但是你的回答完美地解决了我的疑问。谢谢。 - Ado Ren

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