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

如何在TypeScript中实例化带额外属性的可调用对象?

在TypeScript中实例化带额外属性的可调用对象

你定义的namedFunction接口要求对象既是一个接受number参数返回number的函数,同时拥有一个name字符串属性。直接用对象字面量创建会触发额外属性检查导致报错,以下是几种可行的实现方式:

方法1:先创建函数再添加属性,最后类型断言

interface namedFunction {
  (x: number): number;
  name: string;
}

// 先实现函数逻辑
const addOne = (x: number): number => x + 1;
// 为函数添加额外属性
addOne.name = "addOne";
// 通过类型断言指定为目标接口类型
const namedFunc: namedFunction = addOne as namedFunction;

方法2:使用Object.assign合并函数与属性

利用Object.assign可以将属性直接合并到函数对象上,同时绕过额外属性检查:

interface namedFunction {
  (x: number): number;
  name: string;
}

const namedFunc: namedFunction = Object.assign(
  (x: number): number => x + 1,
  { name: "addOne" }
);

方法3:立即执行函数结合类型断言

先通过类型断言将函数标记为目标接口类型,再补充属性:

interface namedFunction {
  (x: number): number;
  name: string;
}

const namedFunc = (
  (x: number): number => x + 1
) as namedFunction;
namedFunc.name = "addOne";

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:22:32