首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用变量访问类型记录中的对象属性

使用变量访问类型记录中的对象属性
EN

Stack Overflow用户
提问于 2022-06-26 07:10:58
回答 1查看 32关注 0票数 0

我有下面的模型

代码语言:javascript
复制
interface Budget {
    budget_july?: number,
    budget_august?: number,
    budget_september?: number,
    budget_october?: number,
    budget_november?: number,
    budget_december?: number,
    budget_january?: number,
    budget_february?: number,
    budget_march?: number,
    budget_april?: number,
    budget_may?: number,
    budget_june?: number
}

我试图使用变量动态访问该属性,如下所示:

代码语言:javascript
复制
const budgets: Budget[] = [];

var datestr = '2022-07-01';

const budget_month: keyof Budget = 'budget_' + new Date(datestr).toLocaleString('default', { month: 'long' }).toLowerCase();
budgets[0][budget_month] = 5000;

在这里我得到了错误:输入'string‘不能分配到键入'keyof预算内’

以下作品:

代码语言:javascript
复制
const budget_month = 'budget_july';  budgets[0][budget_month] = 5000;

我已经想出了一个解决办法,用开关/机箱,但它很难看。有可能像我在这里那样工作吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-26 07:56:38

类型记录无法跟踪所有的字符串转换,并且知道它在末尾将是一个keyof Budget

我认为您最好使用将string转换为keyof Budget的类型断言。

代码语言:javascript
复制
const budget_month =
  'budget_' +
  new Date(datestr)
    .toLocaleString('default', { month: 'long' })
    .toLowerCase() as keyof Budget;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72759572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档