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

TypeScript中如何从同时包含属性与函数签名的接口创建对象?

你定义的TeacherFunc属于TypeScript的混合类型接口,描述的是同时具备函数调用能力和自定义属性的实体,本质是带附加属性的函数,不能直接用普通对象字面量声明。

正确实现方式如下:

interface TeacherFunc {
  id: number;
  name: string;
  (x: number, y: number): number;
}

// 先创建符合函数签名要求的函数,同时做类型断言
const tf = function(x: number, y: number): number {
  return x + y;
} as TeacherFunc;

// 给函数挂载对应的属性
tf.id = 1;
tf.name = "Aaron";

验证使用完全符合接口要求:

// 作为函数调用
console.log(tf(2, 3)); // 输出 5
// 访问属性
console.log(tf.id, tf.name); // 输出 1 Aaron

原理说明:JavaScript中函数本身就是特殊的对象,支持挂载自定义属性,TypeScript的混合类型接口就是专门用来描述这类场景的语法。直接写对象字面量会报错,因为普通对象默认不满足可调用的函数签名约束。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:36:02