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

如何在TypeScript中编写支持任意数量参数的通用OR运算函数

TypeScript 任意参数OR运算实现方案

完全可以实现,我们可以通过剩余参数特性做到支持传入任意数量参数,也支持数组参数的实现方式,同时可以兼容原有两参数函数的调用逻辑和返回行为。

1. 剩余参数版本(兼容旧调用写法)

这个版本不需要改动你原有调用2个参数的代码,同时支持任意多参数传入,行为和原生||完全一致:返回第一个真值,所有参数都为假时返回最后一个参数。

export const performOR = <T>(...args: T[]): T => {
  // 遍历参数,找到第一个真值直接返回,符合OR短路特性
  for (const arg of args) {
    if (arg) return arg;
  }
  return args[args.length - 1];
};

调用示例:

// 原有两参调用完全兼容
const isArg1OrArg2 = performOR(x, y);
// 支持任意数量参数
const hasTrueValue = performOR(0, '', false, '有效内容', null);
// 上述调用返回结果为 '有效内容',和连续使用 || 的行为完全一致

2. 数组参数版本

如果需要传入参数数组调用,可以使用如下实现:

export const performOR = <T>(args: T[]): T => {
  for (const arg of args) {
    if (arg) return arg;
  }
  return args[args.length - 1];
};

调用示例:

const paramList = [x, y, z, a, b];
const hasTrueValue = performOR(paramList);

如果不需要保留原始返回值,只需要返回布尔结果,可以直接用数组的some方法简化代码:

// 剩余参数版本返回布尔
export const performOR = <T>(...args: T[]): boolean => args.some(Boolean);
// 数组参数版本返回布尔
export const performOR = <T>(args: T[]): boolean => args.some(Boolean);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:36:09