如何结合this与对象解构一行完成类属性赋值?
一行实现类属性的解构赋值
当前我通过以下代码先解构获取变量,再赋值给类属性:
const { state$, toggleState } = StateManagement.useToggleState$(initialState); this.layoutState$ = state$; this.toggleState = toggleState;
我想去掉中间变量,用一行代码完成,尝试了这种写法但直接报错:
{ state$: this.layoutState$, toggleState: this.toggleState } = StateManagement.useToggleState$(initialState);
给代码加上括号后IDE不再报错,却没完成实际赋值。请问如何用一行代码实现类属性的赋值?
你需要用括号将整个解构赋值语句包裹起来,确保它被解析为赋值表达式而非块级语句,这样就能完成一行赋值:
({ state$: this.layoutState$, toggleState: this.toggleState } = StateManagement.useToggleState$(initialState));
为什么要这么写:
- 当代码以
{开头时,JavaScript会默认把它当成块级作用域的起始标记,而不是解构赋值的语法,所以直接写会触发语法错误。 - 用
()把整个语句包起来后,JS引擎就会把它识别成一个表达式,解构赋值的逻辑就能正常运行,把useToggleState$返回对象里的state$和toggleState,分别赋值给类实例的this.layoutState$和this.toggleState。
内容的提问来源于stack exchange,提问作者ertucode
相关产品推荐
相关产品推荐

