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

TypeScript中如何访问OpenEditRow对象键3对应的布尔值?

如何访问自定义类对象中数字键3对应的布尔值?

嘿,我来帮你理清楚这个问题~首先得提一句,你这里其实存在个类型不匹配的小问题:你声明的open变量类型是OpenEditRow,但实际对应的对象是带有0、1、2、3这些数字索引键的集合,可OpenEditRow类本身只有一个index属性,并没有定义数字索引的访问规则,所以直接访问会触发TypeScript的类型报错哦。

下面给你两种可行的解决方案:

方案一:调整类型定义(推荐)

如果你的实际业务场景里,这个对象就是要用数字键来存储布尔值,那最好修改类型定义,让它贴合实际的结构:

给类添加数字索引签名

修改OpenEditRow的定义,加上数字索引签名,这样TypeScript就知道允许通过数字键访问布尔值了:

export class OpenEditRow {
  index: boolean;
  // 添加数字索引签名,支持数字键访问布尔值
  [key: number]: boolean;
  constructor(index: boolean) {
    this.index = index;
  }
}

修改完成后,你就可以直接用方括号语法访问键3对应的值:

const targetValue = open[3]; // 拿到true

或者直接使用更贴合的类型

如果这个OpenEditRow类的index属性其实是多余的,或者你根本不需要用类实例,那可以直接用Record<number, boolean>类型来声明open,这是TypeScript里专门用来描述“键为数字、值为布尔值”的对象类型:

const open: Record<number, boolean> = { 0: true, 1: false, 2: false, 3: true };
const targetValue = open[3]; // 直接获取到true

方案二:临时类型断言(不推荐,仅特殊场景用)

如果暂时不想修改类型定义,只是想绕过TypeScript的类型检查,可以用类型断言把open转换成支持数字索引的对象类型:

const targetValue = (open as Record<number, boolean>)[3];

不过这种方式会跳过TypeScript的类型校验,可能隐藏潜在的类型问题,所以优先推荐方案一哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 14:17:43