我正在开发一个需要大量使用向量和矩阵数学的项目,我非常希望能够使用运算符重载。
有一些Babel插件(例如https://github.com/rob-blackbourn/jetblack-operator-overloading)可以为JavaScript启用运算符重载,但它们不适用于TypeScript(或者至少它们不能与VS Code的TS语言服务器一起使用)。虽然有使用// @ts-ignore
的解决方法,但我认为它很丑陋,而且会移除下一行的类型检查优势。
我想将代码转换成这样(其中a
、b
和c
是自定义对象):
a + b * c
翻译为:
将内容转化为类似于这样的形式:a.__add__(b.__mul__(c))
如果,例如c
类型不正确,则函数__mul__
无法使用。VS Code应该划线原始行或更好的是符号c
。
我想,在将代码传递给TS编译器之前进行转换是可能的(这正是Babel插件所做的)。但是,VS Code将始终显示错误(运算符'+'不能应用于类型'Custom'和'Custom'
)。
所以我的问题是:是否有项目实现了上述描述的行为?如果没有,是否可以扩展TypeScript和/或TypeScript语言服务器以此方式?如果可以,请提供其他研究参考的链接。
我还对JSX(在React中使用)如何使用全新的语法与TS完全集成以及是否有其他修改TS的项目感兴趣。