TypeScript中嵌套模板字符串动态获取对象属性问题
动态获取对象属性的解决方案
嘿,这个问题我之前帮不少开发者解决过——本质是JavaScript里动态属性访问的常见坑:当你想通过变量里的字符串来访问对象属性时,直接用点语法肯定不行,因为JS会把变量名当成字面量属性名去查找,而不是读取变量的实际值。
给你两种实用的解决办法:
1. 方括号语法(最直接推荐)
这是处理动态属性访问的标准方式,把存储属性名的变量放进方括号里就行,JS会自动求值变量的内容,然后去对象里匹配对应属性:
// 示例对象 const targetObj = { testcolumn: "这是你要的目标值" }; // 存储属性名的变量 const propName = "testcolumn"; // 动态获取属性 const result = targetObj[propName]; console.log(result); // 输出:这是你要的目标值
2. 结合模板字符串(满足你的嵌套字面量需求)
如果你的场景需要拼接属性名(比如从多个变量生成属性名),模板字符串可以嵌入到方括号里使用:
const baseName = "test"; const suffix = "column"; // 用模板字符串拼接属性名 const result = targetObj[`${baseName}${suffix}`]; console.log(result); // 输出:这是你要的目标值
当然如果只是单一变量的话,直接用targetObj[propName]就够了,模板字符串在这里属于“能用但没必要”的操作,但复杂拼接场景下会很方便。
额外提醒
- 如果属性名包含空格、连字符这类特殊字符,方括号语法是唯一可行的方式(点语法不支持这类属性名)
- 记得提前确认变量里的字符串确实是对象存在的属性,不然会返回
undefined
内容的提问来源于stack exchange,提问作者Vincent Maggioli
相关产品推荐
相关产品推荐

