如何修复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
相关产品推荐
相关产品推荐

