在Typescript中使用动态键名访问状态

时间:2020-10-20 14:02:49

标签: javascript reactjs typescript typescript2.0 react-state

我在React中有这样的状态:

type MyState = {
  xCount: number;
  yCount: number;
};

我想在编写程序时不知道状态名称就访问状态。

export class BodyWidget extends React.Component<BodyWidgetProps> {
  state: MyState = {
    xCount: 1,
    yCount: 1
  };

returnState = (name:any) {
  return this.state[name]
}

...
}

当我尝试此操作时,出现此错误:

元素隐式地具有“ any”类型,因为类型“ any”的表达式不能用于索引类型“ MyState”。

2 个答案:

答案 0 :(得分:1)

尝试

returnState = (name: keyof MyState) {
  return this.state[name]
}

答案 1 :(得分:-1)

该错误表明'name'应该是MyState属性之一(xCount或yCount),如下所示:

returnState = (name: keyof MyState) => {
    return this.state[name];
}