TypeScript中如何使用字符串变量获取本地JSON文件对应属性值
问题原因
你当前使用的点属性访问语法getProperty.asse.file.country,是固定读取file对象下名为country的属性,不会把country作为变量解析,你的JSON结构中不存在该属性,因此触发报错。
解决方法
要使用变量作为属性名访问对象值,改用方括号索引语法即可,TypeScript 环境下如果需要类型校验可补充对应类型定义:
import * as getProperty from '../properties.json' // 可选:定义合法的国家编码类型,获得TypeScript类型校验支持 type CountryCode = keyof typeof getProperty.asse.file; function getIdSheet() { let country: CountryCode = 'CO' // 用方括号传入变量作为属性名 let id = getProperty.asse.file[country]; // 此时id的值就是你需要的'fileIdCo' }
语法说明
JavaScript/TypeScript 提供两种对象属性访问方式:
- 点语法:仅支持访问固定字面量的属性名,属性名不能是动态变量
- 方括号语法:方括号内可以传入变量、表达式,运行时会将内部结果转为字符串作为属性名取值
注意:如果
country的取值是完全动态的,无法保证一定是file下存在的属性,可以先做存在性判断再取值,避免返回undefined。
内容的提问来源于stack exchange,提问作者print
相关产品推荐
相关产品推荐

