繁体   English   中英

使用变量访问 Typescript 中的对象属性

[英]Accessing object property in Typescript using variable

我有以下型号

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
}

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

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 Budget'

以下作品:

const budget_month = 'budget_july';  budgets[0][budget_month] = 5000;

我已经使用 switch/case 制定了一种解决方法,但它很难看。 有可能像我在这里做的那样做这项工作吗?

Typescript 无法跟踪所有字符串转换,并且知道它最终将成为keyof Budget的 key。

我认为使用将string转换为keyof Budget的类型断言可能会更好:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM