向对象添加键/值对时,不能将“字符串”类型用作索引类型

时间:2020-09-01 21:32:42

标签: javascript reactjs typescript

我在我的项目中使用Typescript和React,但出现此错误:

const dataKey: String
Type 'String' cannot be used as an index type. ts(2538)

这是我的代码(简体):

export interface UserData {
  email: string;
  name: string;
  buyer: boolean;
}

createObject(data: any) {
  const dataObj: UserData = {
    email: '',
    name: '',
    buyer: '',
  };

  for (const i in data) {
    const dataKey: String = data[i].field.toLowerCase();
    dataObj[dataKey] = data[i].value;
  }
  return dataObj;
}

我不知道如何在不使用字符串值的情况下将键/值对添加到我的dataObj中。我必须对它们的dataKey进行小写的字符串操作。

有人知道我该如何重做这段代码?

1 个答案:

答案 0 :(得分:2)

String重写为string。前者是一个对象;后者是原始的。您想使用原始的string作为密钥,而不是密钥的对象。

例如:

String('foo') // object of type String
'foo' // string

也可以这样重写:

export interface UserData {
  email: string;
  name: string;
  buyer: boolean;
}

如此:

export interface UserData {
  [key: string]: string | boolean,
  email: string;
  name: string;
  buyer: boolean;
}

因此TypeScript允许您使用计算出的属性名称。