我正在做一个需要大量向量和矩阵数学的项目,我希望有运算符重载。
有一些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代码应该在原始行下划线,或者更好的是在符号c
下划线。
我想在把代码传递给TS编译器之前可以先转换代码(这正是Babel插件所做的),但是VS代码总是显示错误(Operator '+' cannot be applied to types 'Custom' and 'Custom'
)。
所以我的问题是是否有一个项目可以实现上述行为?2如果没有,是否有可能以这种方式扩展TypeScript和/或TypeScript语言服务器?3如果有,请提供参考文献的链接以供进一步研究。
我还对JSX(React中使用的)如何使用全新的语法实现与TS的完全集成感兴趣,是否有其他项目以这种方式修改TS。
1条答案
按热度按时间rdlzhqv91#
Babel只适用于javascript代码,你需要编写一个自定义的typescript转换器,并在ts-loader上配置这个转换器。但是当ForkTsCheckerWebpackPlugin检查你的语法正确性时,仍然会出现一个问题。也许你必须关闭这个插件。
下面是创建空转换器的示例代码:
此外,您还必须配置您的项目,如果在vue中,vue.config.js将是: