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

TypeScript报错:‘MouseEvent’并非泛型类型的解决求助

解决方法

报错核心原因是你使用的MouseEvent是全局DOM原生类型,它并非泛型结构。React为鼠标事件提供了专门的泛型类型React.MouseEvent,替换成这个类型就能解决问题。

有两种修改方式:

方式一:直接使用React命名空间下的类型

无需额外导入,直接在参数类型里指定React.MouseEvent<HTMLButtonElement>:

"use client";
import React, { ReactNode } from "react";

/**
 * Custom General Purpose Button Definition
 * @param param0
 * @returns
 */

function CButton({
    children,
    className,
    onClickCallback,
    name,
}: {
    children: ReactNode;
    className?: string;
    onClickCallback?: (e: React.MouseEvent<HTMLButtonElement>) => void;
    name?: string;
}) {
    return (
        <>
            <button
                className={
                    className ??
                    "btn inline-block bg-white border-[1px] border-gray-300 dark:border-gray-800 hover:text-white dark:bg-zinc-900 dark:hover:bg-gray-950 m-[1px]"
                }
                onClick={(e) => onClickCallback?.(e)}
                name={name}
            >
                {children}
            </button>
        </>
    );
}

export default CButton;

方式二:从React中导入MouseEvent类型

在导入语句中添加MouseEvent,之后直接使用MouseEvent<HTMLButtonElement>:

"use client";
import React, { ReactNode, MouseEvent } from "react";

/**
 * Custom General Purpose Button Definition
 * @param param0
 * @returns
 */

function CButton({
    children,
    className,
    onClickCallback,
    name,
}: {
    children: ReactNode;
    className?: string;
    onClickCallback?: (e: MouseEvent<HTMLButtonElement>) => void;
    name?: string;
}) {
    return (
        <>
            <button
                className={
                    className ??
                    "btn inline-block bg-white border-[1px] border-gray-300 dark:border-gray-800 hover:text-white dark:bg-zinc-900 dark:hover:bg-gray-950 m-[1px]"
                }
                onClick={(e) => onClickCallback?.(e)}
                name={name}
            >
                {children}
            </button>
        </>
    );
}

export default CButton;

补充说明:React的MouseEvent泛型只需传入目标元素类型(如HTMLButtonElement)即可,不需要第二个参数——原生DOM的MouseEvent本身不支持泛型,这正是你报错的关键。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 07:12:11