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

为函数参数指定泛型类型后调用报错:Type unknown无调用签名

问题解决:TypeScript泛型函数调用报错 "This expression is not callable. Type unknown has no call signature"

你遇到的问题出在泛型T没有类型约束上:定义fun函数时,泛型T没有任何限制,TypeScript会把参数x的类型推断为unknown,而unknown类型的值不允许直接调用,所以触发了报错。

只需要给泛型T加上函数类型的约束,明确它是一个可以调用且返回值能和字符串拼接的函数即可,修正后的代码如下:

function a() { return 'abc' }

// 约束T为返回字符串的函数类型
function fun<T extends () => string>(x: T, y: string) {
    return x() + y;
}

fun(a, "str") // 正常运行,返回结果为"abcstr"

如果你的函数可能返回其他可以和字符串拼接的类型(比如数字),可以把约束调整得更灵活:

// 允许返回字符串或数字类型的函数
function fun<T extends () => string | number>(x: T, y: string) {
    return x() + y;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 13:24:26