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

TypeScript调用匿名函数提示Cannot find name参数报错

报错原因

TypeScript 抛出 Cannot find name c 错误本质是作用域认知偏差:

  • 参数位置写的b: (c: number) => void属于类型标注,这里的c只是用来描述「b需要接收一个数字类型参数」的形式占位符,只在类型定义的上下文里有意义,不会在fn的函数作用域里生成任何名为c的实际可访问变量。
  • 你在函数体里写b(c)时,TS会沿着当前fn作用域、上层全局作用域查找名为c的真实变量,找不到自然触发找不到名称的报错。
正确调用方式

调用参数b的时候,必须传入一个真实存在、符合number类型要求的值,根据业务场景常见两种写法:

  • 场景1:把fn的入参a传给b
function fn(a: number, b: (c: number) => void) {
  // a是当前作用域内存在的number类型变量,满足b的入参类型要求
  b(a);
}
  • 场景2:把fn内部计算生成的值传给b
function fn(a: number, b: (c: number) => void) {
  // 内部逻辑生成要传给b的参数值
  const calcResult = a + 10;
  b(calcResult);
}

补充说明:函数类型标注里的参数名仅用于提升类型可读性,你把标注里的c改成任意名字比如(targetVal: number) => void,类型约束效果完全不变,不会影响实际代码逻辑。

内容的提问来源于stack exchange,提问作者Glitch in the Matrix Locator

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 18:12:52