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

TypeScript报错TS2554: Expected 0-1 arguments, but got 2求解

错误原因分析

1. 核心错误(TS2554)触发原因

你报错的new Map('+', 函数)写法不符合Map构造函数的参数要求:

  • Map构造函数仅接受0个或1个参数,唯一可选参数是由键值对数组组成的可迭代对象,格式为[[key1, value1], [key2, value2], ...]
  • 你直接传入了2个独立参数(字符串+箭头函数),和预期的参数格式不匹配,所以抛出「期望0-1个参数,实际得到2个」的错误。

2. 隐性问题补充

你代码中还有两处隐藏的逻辑问题需要同步修复:

  • 你定义的Type类没有声明接受两个入参的构造函数,直接写new Type('Integer', new Set())会触发额外的参数不匹配错误
  • 判断数值是否为NaN不能用LeftNumber != NaN的写法,因为NaN和任何值做相等判断都返回false,必须用isNaN()或Number.isNaN()方法判断
  • 箭头函数的返回值要求为Value,但你原来的逻辑只在符合判断条件时有返回,不符合条件时无返回值,不符合类型声明要求
修复方案

步骤1:补全Type类的构造函数定义

export class Type {
  public name: string;
  private definedOperations: Set<OperationMap>;

  // 新增构造函数接收传入参数
  constructor(name: string, operations: Set<OperationMap>) {
    this.name = name;
    this.definedOperations = operations;
  }

  public appendOperation(operationMap: OperationMap) {
    this.definedOperations.add(operationMap);
  }
}

步骤2:修正Map的初始化写法

有两种符合语法的写法可选:

写法1:构造Map时直接传入键值对数组

const operationMap = new Map<OperationSymbol, (Left: Value, Right: Value) => Value>([
  ['+', (Left: Value, Right: Value): Value => {
    const LeftNumber = Number(Left);
    const RightNumber = Number(Right);
    const areIntegers = Number.isInteger(LeftNumber) && Number.isInteger(RightNumber);
    if (!isNaN(LeftNumber) && !isNaN(RightNumber) && areIntegers) {
      return new Value((LeftNumber + RightNumber).toString(), Integer);
    }
    // 补全兜底逻辑,符合返回值要求
    throw new Error('操作数不是合法整数');
  }]
]);

写法2:先初始化空Map,再调用set方法添加键值对

const operationMap = new Map<OperationSymbol, (Left: Value, Right: Value) => Value>();
operationMap.set('+', (Left: Value, Right: Value): Value => {
  const LeftNumber = Number(Left);
  const RightNumber = Number(Right);
  const areIntegers = Number.isInteger(LeftNumber) && Number.isInteger(RightNumber);
  if (!isNaN(LeftNumber) && !isNaN(RightNumber) && areIntegers) {
    return new Value((LeftNumber + RightNumber).toString(), Integer);
  }
  throw new Error('操作数不是合法整数');
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:18:03