首页 > 解决方案 > 打字稿通过括号符号访问类属性

问题描述

问题的游乐场链接

我试图理解为什么打字稿抱怨我试图通过括号表示法访问类属性。我在下面有我的课:

export class Row implements Record<string, any> {

  gridArea: GridArea;
  index: number;
  _isHeader: boolean;
  _isSelectable: boolean;
  cells: Cell[];
  top: number;
  ...

}

后来我正在创建这个类的一个实例,并尝试根据键值对的对象在它上面设置属性:

addRow(attrs: any) {
  const row = new Row(this.mainGridArea, this.rows.length);
  for (let key in attrs) {
    const value = attrs[key];
    row[key] = value;
  }
  ...
}

但这条线:

row[key] = value;

编译失败,出现以下错误:

元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引“行”类型。在“行”类型上找不到具有“字符串”类型参数的索引签名。

我以前没有使用过 Records,但是根据其他 stackoverflow 问题/答案得出了使用它的结论,但是我仍然遇到问题。任何帮助将非常感激。

标签: typescript

解决方案


推荐阅读