You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复TypeScript中‘Type {} cannot be used as an index type’错误

「Type {} cannot be used as an index type」错误原因及修复

错误原因

你的代码存在语法错误:声明flightsData变量时,类型标注info后缺少赋值运算符=,导致TypeScript错误地将info(数组类型)解析为索引签名的目标类型,而后续的[{ }]被当作索引值,进而触发该错误。

修复方法

1. 补全语法并填充必填字段

在类型标注和数组字面量之间添加=,同时按照TicketInfo接口的定义补全所有必填字段(这是最规范的做法):

interface TicketTime {
    startTime: string;
    endTime: string;
}

interface TicketInfo {
    id: number;
    from: string;
    to: string;
    company: string;
    price: number;
    time: TicketTime;
    duration: number;
    connectionAmount: number | null;
}

type info = TicketInfo[];
// 添加 = 并补全接口要求的所有字段
let flightsData: info = [
    {
        id: 1,
        from: "Beijing",
        to: "Guangzhou",
        company: "China Southern",
        price: 650,
        time: {
            startTime: "09:30",
            endTime: "12:15"
        },
        duration: 165,
        connectionAmount: 0
    }
];

2. 临时占位(不推荐长期使用)

如果只是需要临时占位,可通过类型断言跳过类型检查:

let flightsData: info = [{} as TicketInfo];

3. 调整接口为可选字段

若部分字段并非必填,可在接口中给字段添加?标记为可选:

interface TicketInfo {
    id?: number;
    from?: string;
    to?: string;
    company?: string;
    price?: number;
    time?: TicketTime;
    duration?: number;
    connectionAmount?: number | null;
}

type info = TicketInfo[];
let flightsData: info = [{}];

内容的提问来源于stack exchange,提问作者Melman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 16:27:18