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

TypeScript中$sum重载函数报错,求助解决方法

错误原因及修复方案

核心问题点

  • 函数重载实现不规范:TypeScript里函数重载的实现部分,参数类型必须覆盖所有重载签名的类型,你当前的实现未指定参数类型,触发类型检查报错。
  • 变量未初始化:xor_没有初始值,默认是undefined,直接拼接会得到undefinedxxx或undefined123这类错误结果。
  • 类型判断逻辑错误:xor instanceof String是判断参数是否为String对象实例,但你的参数是数组(string[]或number[]),这个判断永远为false,导致字符串数组也会走数字相加的逻辑,结果完全错误。

修复后的代码

function $sum(xor: string[]): string;
function $sum(xor: number[]): number;
function $sum(xor: string[] | number[]): string | number {
    // 根据数组第一个元素类型初始化累加变量,空数组默认返回0
    let xor_: string | number = xor.length > 0 ? (typeof xor[0] === 'string' ? '' : 0) : 0;
    
    if (typeof xor[0] === 'string') {
        for (const i of xor) {
            xor_ += i as string;
        }
    } else {
        for (const i of xor) {
            xor_ += i as number;
        }
    }
    return xor_;
}

补充说明

  • 空数组场景这里默认返回0,如果需要其他处理逻辑可以自行调整。
  • 用typeof xor[0]判断数组元素类型,更适配字符串/数字这类基本类型的判断,比instanceof更可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:55:21