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

TypeScript如何描述带属性的可调用类型?怎么正确调用示例函数?

1. 带属性的可调用类型的描述方法

你代码中定义的DescribableFunction就是TypeScript中描述这类混合类型的标准写法:在同一个类型声明中同时定义调用签名和额外属性即可,调用签名用来描述函数的入参、返回值规则,额外属性用来描述函数上挂载的自定义属性,这个类型定义本身没有问题。

2. doSomething函数的正确调用方式

你收到报错的核心原因是:普通对象无法被TypeScript识别为可调用的函数类型,你传入的{description="how are you", (9)=>return true;}不仅语法不符合JS对象规范,也无法满足「既是可调用函数、又带description属性」的类型要求。

正确的实现逻辑是:先创建符合调用签名规则的函数,再给这个函数挂载要求的description属性,再将函数作为入参传入doSomething即可,示例代码如下:

type DescribableFunction = {
  description: string;
  (someArg: number): boolean;
};
function doSomething(fn: DescribableFunction) {
  console.log(fn.description + " returned " + fn(6));
}

// 正确调用方式1:分步定义
const checkNum = (num: number) => {
  return num > 5;
}
checkNum.description = "how are you";
doSomething(checkNum); // 输出:how are you returned true

// 正确调用方式2:用Object.assign一行实现
doSomething(
  Object.assign(
    (n: number) => n > 5,
    { description: "how are you" }
  )
);

内容的提问来源于stack exchange,提问作者Nithyashree B L

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:15:04