在 Typescript 中访问具有动态键名的状态 [重复]

Posted

技术标签:

【中文标题】在 Typescript 中访问具有动态键名的状态 [重复]【英文标题】:Accessing a state with dynamic key name in Typescript [duplicate] 【发布时间】:2021-02-03 09:07:00 【问题描述】:

我在 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”类型。

【问题讨论】:

【参考方案1】:

试试

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

【讨论】:

【参考方案2】:

错误提示“名称”应该是 MyState 属性之一(xCount 或 yCount),如下所示:

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

【讨论】:

以上是关于在 Typescript 中访问具有动态键名的状态 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 TSQL OPENJSON 如何从具有动态键名的 JSON 数组中提取值

如何反序列化具有动态(数字)键名的子对象?

如何使用 Angular 在 HTML 中访问没有键名的数组对象

Joi 对象验证:如何验证具有未知键名的值?

连接两个具有不同键名的表

在不知道键名的情况下访问 JSON 对象的元素