You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将函数返回的解构值直接赋值给对象属性?

问题与解决方法

问题背景

我有一个返回两个值的函数,原本希望将该函数的返回值解构后直接赋值给filters对象的sort和sortOrder属性,但这样操作会触发TypeScript错误:

Property 'sort' does not exist on type 'DashboardSortingPreferences'.

尝试的错误写法如下:

const { this.filters.sort, this.filters.sortorder } = this.dashboardColumnSortingService.initializeDashboardSortProperties(
    this.user,
    this.dashboardName,
);

以下写法可以正常运行,我也理解其原理,但想了解是否存在直接将sorted_column和direction赋值给sort和sortOrder属性的方法:

const { sorted_column, direction } = this.dashboardColumnSortingService.initializeDashboardSortProperties(
    this.user,
    this.dashboardName,
);

this.filters.sort = sorted_column;
this.filters.sortorder = direction;

可行的直接赋值方式

有两种简洁的方法可以一步完成赋值,不需要中间变量:

方法1:解构重命名 + Object.assign

Object.assign(this.filters, {
  sort: sorted_column,
  sortorder: direction
} = this.dashboardColumnSortingService.initializeDashboardSortProperties(
    this.user,
    this.dashboardName,
));

方法2:括号包裹的解构赋值(推荐)

({ 
  sorted_column: this.filters.sort, 
  direction: this.filters.sortorder 
} = this.dashboardColumnSortingService.initializeDashboardSortProperties(
    this.user,
    this.dashboardName,
));

注意必须用括号包裹整个语句,否则JavaScript会把开头的{}解析成代码块,而非解构赋值的语法结构。

关于TypeScript错误的补充

之前的错误写法本身存在语法问题——解构赋值的左侧不能直接使用this.filters.sort这类对象属性路径。另外TypeScript提示的类型错误,需要确认DashboardSortingPreferences类型定义中确实包含sort和sortorder属性;如果是临时需求,也可以通过类型断言(this.filters as any)绕过检查,但优先建议修正类型定义以保证代码类型安全。

内容的提问来源于stack exchange,提问作者Peter Boomsma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 19:05:26