Json 从Typescript中使用括号表示法的对象更新嵌套属性
假设我有一个具有嵌套属性的接口和对象:Json 从Typescript中使用括号表示法的对象更新嵌套属性,json,typescript,Json,Typescript,假设我有一个具有嵌套属性的接口和对象: 接口Iobj{ a:{a2:string}; b:弦; } 常量对象:Iobj={ a:{ a2:“你好” } b:“世界” }; 我有一个字符串,用于标识obj中的属性: const prop=“a.a2” //或 const prop=“b” 我试图用括号表示法更新obj,但是这些语句给了我一个错误类型“string”不能分配给类型“never” obj[prop] = "newString"; obj[prop as keyo
接口Iobj{
a:{a2:string};
b:弦;
}
常量对象:Iobj={
a:{
a2:“你好”
}
b:“世界”
};
我有一个字符串,用于标识obj中的属性:
const prop=“a.a2”
//或
const prop=“b”
我试图用括号表示法更新obj
,但是这些语句给了我一个错误类型“string”不能分配给类型“never”
obj[prop] = "newString";
obj[prop as keyof Iobj] = "newString";
似乎未将对象[prop]识别为有效。我在这里做错了什么?问题是,使用
obj['a.a2']
Javascript希望obj
的定义如下:
obj = {
"a.a2": "hello"
}
然而,在您的案例中,a2
是a
的子对象,因此首先需要访问a
,然后访问a2
,这就是为什么在您的案例中,obj['a']['a2']
起作用的原因。但是,如果您仍然坚持使用a.a2
,则可以使用理解该键的Lodash库
obj[“a.a2”]
即使在香草JS中也不起作用;您必须使用类似于lodash.get
。有效的道具(例如“b”
)工作正常