TypeScript中如何获取与JSON对象属性同名的变量的值
实现方案
推荐优先使用类型安全的对象映射方案,无安全风险且符合TypeScript的类型校验规则:
步骤1:将零散的数值变量封装为映射对象
// 把原来的零散变量统一放到映射对象中,方便通过字符串key取值 const totalMap: Record<string, number> = { totalSer: 917, totalWor: 7237, totalAtm: 1410, totalCt: 1039, totalSt: 27 }
步骤2:遍历数组直接生成结果
可以直接用Array.map方法一行代码得到目标数组,不需要写for循环:
const totalAll: Array<number> = titleSheets.map(item => totalMap[item.properties.title])
运行后totalAll的值就是你需要的[1410, 7237]。
特殊场景妥协方案(不推荐)
如果你实在不想修改原有零散变量的定义,且变量是定义在全局作用域下,可以用以下写法,但是存在类型不安全、模块作用域下失效的问题:
const totalAll: Array<number> = titleSheets.map(item => (window as any)[item.properties.title])
注意:不要使用
eval实现该需求,会引入代码注入的安全风险,同时也会破坏TypeScript的类型校验能力。
内容的提问来源于stack exchange,提问作者sirtz
相关产品推荐
相关产品推荐

