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

React/TypeScript函数类型定义报错:期望0个参数却传入1个

问题解决:函数参数类型不匹配导致的TS错误

你遇到的「Expected 0 arguments, but got 1」错误,根源是Props类型中对changeTask的定义和实际调用不匹配:

当前Props里的changeTask定义为() => {},这表示该函数不接受任何参数,但你在调用时传入了一个Task对象,类型校验自然报错。

修正步骤:

  1. 修正changeTask的类型定义:
    在Props类型中,明确changeTask接受一个Tasks类型的参数,若无需返回值则设为void:

    type Props = {
      Tasks: Tasks[];
      changeTask: (updatedTask: Tasks) => void;
    };
    

    如果你只需要更新Task的部分属性(比如仅修改status和priority),可以用Partial<Tasks>让类型更灵活:

    changeTask: (updatedTask: Partial<Tasks>) => void;
    
  2. 补充其他规范类型(可选但推荐):

    • 给handleSaveTask的event加上明确类型:(event: React.FormEvent<HTMLFormElement>)
    • 补充原Tasks类型缺失的id字段(代码里用到了task.id),同时确保id、status、priority这些变量有正确的类型定义:
      type Tasks = {
        id: string;
        title: string;
        author: string;
        description: string;
        status: string;
        priority: string;
      };
      

修正后的核心代码片段:

import React, { useState, FC, FormEvent } from "react";

type Tasks = {
  id: string;
  title: string;
  author: string;
  description: string;
  status: string;
  priority: string;
};

type Props = {
  Tasks: Tasks[];
  changeTask: (updatedTask: Tasks) => void;
};

const TaskComponent: FC<Props> = ({ Tasks, changeTask }) => {
  const id = "sample-task-id"; // 根据实际场景赋值
  const [status, setStatus] = useState<string>("");
  const [priority, setPriority] = useState<string>("");
  
  const task = Tasks.find((task) => String(task.id) === id);
  
  const handleSaveTask = (event: FormEvent<HTMLFormElement>) => {
    event.preventDefault();
    if (!task) return; // 避免task为undefined的情况
    
    changeTask({
      ...task,
      status,
      priority
    });
  };
  
  return (
    <form onSubmit={handleSaveTask}>
      {/* 表单内容 */}
    </form>
  );
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:22:19