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

对象字面量含new属性无法点访问却可被构造,此为预期功能吗?

这是TypeScript的预期行为吗?

是的,这确实是TypeScript的预期行为,核心原因在于它对构造函数类型的自动推断规则:

  • 当你定义一个包含名为new的方法的对象字面量时,TypeScript会自动将这个对象推断为构造函数类型(即符合new (参数: 类型) => 返回值类型的签名)。
  • 此时尝试用点语法a.new(35)访问属性时,TypeScript的解析器会优先把new识别为构造操作符的关键字,而非对象的属性名,因此会触发错误。
  • 而new a(35)能正常运行,正是因为TypeScript已经把a当成了可被new调用的构造函数,调用时会匹配它的new方法签名。

如果想要访问这个名为new的属性方法,你可以改用方括号语法来明确指定访问对象属性:

// other.ts
import {a} from "./index"
a['new'](35) // 有效,能正确调用该属性方法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 11:54:56