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

TypeScript如何仅传递函数的第二个参数?

TypeScript 指定参数名传参的解决方案

TypeScript/JavaScript并没有像C#那样原生支持直接通过参数名绑定传参的语法,但可以通过以下几种方式实现类似效果:

方案1:改用对象参数(推荐)

将函数的多个可选参数合并为一个配置对象,调用时通过对象属性名明确指定要传递的参数,这是社区最常用的方案,可读性和扩展性都更好。

修改函数定义:

// 先定义参数类型接口
interface OpenModalOptions {
  commission?: Commission;
  people?: People;
}

openMultipleAddFormModal(options?: OpenModalOptions): void {
  // 解构获取参数,可设置默认值
  const { commission, people } = options || {};
  // 后续业务逻辑
}

调用方式:

// 仅传递people参数
this.openMultipleAddFormModal({ people: res });

方案2:传递undefined占位跳过参数

如果不想修改原有函数结构,可以手动传递undefined作为第一个参数的占位符,直接传递第二个参数:

this.openMultipleAddFormModal(undefined, res);

这种方式虽然可行,但参数数量较多时可读性差,维护成本高,不推荐在复杂场景使用。

方案3:兼容多种调用方式(进阶)

如果需要同时兼容原有按顺序传参和按参数名传参的方式,可以通过函数重载实现:

// 函数重载声明
openMultipleAddFormModal(commission?: Commission, people?: People): void;
openMultipleAddFormModal(options: { commission?: Commission; people?: People }): void;

// 函数实现
openMultipleAddFormModal(arg1?: any, arg2?: any): void {
  let commission: Commission | undefined;
  let people: People | undefined;

  // 判断传入的是对象还是单个参数
  if (typeof arg1 === 'object' && arg1 !== null) {
    ({ commission, people } = arg1);
  } else {
    commission = arg1;
    people = arg2;
  }

  // 后续业务逻辑
}

这样既支持原有调用方式,也支持指定参数名的对象传参:

// 原有顺序传参
this.openMultipleAddFormModal(commissionObj);
// 指定people参数传参
this.openMultipleAddFormModal({ people: res });

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 20:11:09