Typescript 是否有运算符重载?

问题描述 投票:0回答:2

我的问题是打字稿中是否存在运算符重载,如果存在,我可以给出一个示例或一个链接,您可以在其中阅读相关内容。

typescript operator-overloading
2个回答
41
投票

不,它不存在。除非有关于如何在纯 JavaScript 中实现它的明确规范,否则它不太可能存在。


11
投票

打字稿中是否存在运算符重载

不,TypeScript 项目似乎对实现这个新功能不感兴趣,除非它首先添加到 JavaScript 中。 (我可以尊重在他们的项目中想要避免范围蔓延。)

曾经希望新版本的 ECMAScript 能够实现运算符重载。请参阅此语言提案:https://github.com/tc39/proposal-operator-overloading


2024 年更新:

已决定

Withdraw
该提案。

我想我找到了会议记录,其中详细说明了为什么它不会被添加到 ECMAScript:https://github.com/tc39/notes/blob/main/meetings/2023-11/november-28.md #撤销运算符重载

演讲者要点总结

  • 提出运算符重载是为了解决 JS 的许多问题,包括启用不同的数字类型、包括 CSS 单位在内的单位计算、更符合人体工程学的矢量/矩阵处理以及泛化 BigInt/Decimal。
  • 一些 JavaScript 引擎维护者认为,运算符重载没有适当的成本/收益权衡,值得实施。高效实施非常困难,尤其是具有范围界定/安全功能。
  • 考虑到运算符重载委员会的立场,DE提议撤销运算符重载,这可能为诸如Decimal之类的提案扫清道路,其中“是否重载运算符”是一个相关的设计讨论。

结论

  • TC39达成共识,撤回运营商超载提案,等待会后SYG的确认。
  • 撤回是由于实施成本高以及运算符重载提案或该领域任何其他可能的提案的高复杂性。
  • 将来可能会在 TC39 中重新引入算子过载(特别是如果实施者对成本/收益权衡的看法发生变化),但委员会目前不希望花时间调查算子过载。
© www.soinside.com 2019 - 2024. All rights reserved.