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

如何优雅实现带可选对象参数及默认值的TypeScript函数?

最佳TypeScript实现方案:带可选配置与默认值的函数

步骤1:定义配置类型

先明确配置对象的类型,让TypeScript提供完整的类型校验:

type Config = {
  acceptNegative?: boolean;
  isBig?: boolean;
};

步骤2:实现核心函数

用参数默认值+对象展开合并的方式处理,这是最简洁优雅的实现方案:

function doSomething(num: number, config: Config = {}) {
  // 合并默认值与用户传入的配置,用户配置会自动覆盖对应默认字段
  const finalConfig = {
    acceptNegative: false, // 默认不接受负数
    isBig: false, // 默认标记为非大数
    ...config
  };

  // 业务逻辑示例(可根据需求修改)
  if (!finalConfig.acceptNegative && num < 0) {
    throw new Error("当前配置不允许输入负数");
  }
  console.log(`处理数字:${num},最终配置:`, finalConfig);
}

合法调用示例

所有你要求的调用方式都能通过TypeScript类型校验:

const targetNum = 15;

// 1. 不传配置对象,使用全部默认值
doSomething(targetNum);

// 2. 只传部分配置字段
doSomething(targetNum, { acceptNegative: true });

// 3. 传完整配置对象
doSomething(targetNum, { acceptNegative: true, isBig: false });

方案优势

  • 类型安全:TypeScript会严格校验传入的配置字段,避免非法参数
  • 简洁高效:用对象展开运算符自动合并默认值与用户配置,无需手动判断每个字段是否存在
  • 容错性强:给config设置默认空对象,避免用户不传配置时出现undefined相关报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 23:58:12