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

TypeScript函数如何支持多类型传参与无参调用并设置默认值

解决方案

你之前的function myfunc(...values : Array<number>)写法不支持无参调用,是因为剩余参数默认要求至少传入一个值,同时也没有对数组类型的入参做显式的类型兼容处理,我们可以通过函数重载+参数类型收窄+默认值设置来兼容所有四种调用场景:

具体实现代码

// 先定义四种调用场景的类型签名
function myfunc(): number[]
function myfunc(...values: number[]): number[]
function myfunc(values: number[]): number[]
// 实际函数实现
function myfunc(...args: (number | number[])[]): number[] {
  // 无参场景返回默认数组,可根据需求修改默认值
  if (args.length === 0) return []
  // 入参为数组场景直接返回传入的数组
  if (Array.isArray(args[0])) return args[0]
  // 零散数字入参场景返回参数组成的数组
  return args as number[]
}

调用验证

以下四种调用方式均可正常运行并通过TypeScript类型校验:

  • 无参调用:myfunc() → 返回默认空数组
  • 单个数字调用:myfunc(1) → 返回[1]
  • 多个数字调用:myfunc(1,2) → 返回[1,2]
  • 数组参数调用:myfunc([1, 2]) → 返回[1,2]

默认值修改方式

如果需要设置非空的默认数组,比如默认返回[5, 10],只需修改无参分支的返回值即可:

if (args.length === 0) return [5, 10]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 00:06:05