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

为何传入无参回调未触发TypeScript报错?期望1参却传0参

为什么无参回调传入要求接收string参数的函数不报错?

这是TypeScript函数类型兼容性的既定规则——允许传入参数数量更少的回调函数。

TypeScript判断函数兼容性时,只要目标函数(这里是你定义的(value: string) => void)调用时传入的参数,被传入的函数能“安全处理”就行。这里的“安全”指的是:就算回调没声明接收参数,实际调用时传入的string值会被直接忽略,不会触发运行时错误。

举个更清晰的例子:

// 要求接收两个参数的函数类型
type TwoParamFunc = (x: number, y: number) => void;

// 传入只接受一个参数的函数,TypeScript不会报错
const myFunc: TwoParamFunc = (x) => console.log(x);
myFunc(10, 20); // 输出10,第二个参数被忽略

回到你的代码,someFunc调用回调时会传入string类型的key,但你写的无参回调只是没用到这个参数而已,TypeScript认定这种操作是安全的,因此不会抛出错误。

如果你希望强制回调必须显式声明接收这个参数,可以通过自定义类型约束或者一些类型技巧实现,但默认情况下TypeScript允许这种参数个数兼容的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:24:52