在最新的TypeScript中是否可以使特定的类方法成为原型,即使一般目标是ES6?
作为一个附带问题 - 让特定的类只生成原型。
TypeScript类的示例:
class Test {
constructor() {
}
methodName() {
}
}
对于ES6作为一般目标,它生成相同的JavaScript代码,而我希望它是:
class Test {
constructor() {
}
}
Test.prototype.methodName = function () {
}
即。无论是针对特定方法还是针对类中的所有方法,我都希望获得原型,尽管使用ES6作为一般目标。
询问的主要原因如下。我有一个需要创建大量此类类实例的模块,在阅读了很多这样的帖子后,似乎共识是原型在这种情况下表现更好:
P.S。我最感兴趣的是服务器端的东西,即Node.js 4-8。
答案 0 :(得分:3)
当这段代码
时class Test {
constructor() {
}
methodName() {
}
}
在支持es6的运行时中执行,原型上定义了methodName
:
console.log(typeof Test.prototype.methodName)
VM153:1 function
<强>更新强>
我创建了一个非常简单的测试来比较类中定义的方法与原型上分配的方法的性能。如果可以相信jsperf结果,那么在Chrome 58中调用类方法会慢5%,但Firefox中的原型速度会慢14%。
我建议使用您的用例中的实际数据运行实际性能测试,然后为Chrome和/或Firefox归档相应的错误。
答案 1 :(得分:2)
没有办法做到这一点(来源:我在TypeScript团队工作)。
也许有一个后续问题,为什么你想要这样做。 AFAIK这两种结果几乎无法区分行为。