让TypeScript为ES6生成原型
在最新的TypeScript中,即使通用的目标是ES6,也有可能使特定的类方法成为原型吗 作为一个附带问题——让一个特定的类只生成原型 TypeScript类的示例:让TypeScript为ES6生成原型,typescript,Typescript,在最新的TypeScript中,即使通用的目标是ES6,也有可能使特定的类方法成为原型吗 作为一个附带问题——让一个特定的类只生成原型 TypeScript类的示例: class Test { constructor() { } methodName() { } } 对于作为一般目标的ES6,它生成相同的JavaScript代码,而我希望它是: class Test { constructor() { } } Test.prot
class Test {
constructor() {
}
methodName() {
}
}
对于作为一般目标的ES6,它生成相同的JavaScript代码,而我希望它是:
class Test {
constructor() {
}
}
Test.prototype.methodName = function () {
}
i、 e.对于特定方法或类中的所有方法,我希望得到原型,尽管使用ES6作为一般目标
询问的主要原因如下。我有一个模块需要创建大量这样的类实例,在阅读了这里的许多帖子后,大家似乎一致认为原型在这种情况下会表现得更好:
另外,我最感兴趣的是服务器端的东西,即Node.js 4-8。没有办法做到这一点(来源:我在TypeScript团队工作) 也许还有一个后续问题,你为什么要这样做。恐怕这两种结果在行为上几乎无法区分。当这段代码
class Test {
constructor() {
}
methodName() {
}
}
在支持es6的运行时执行,methodName
在原型上定义:
console.log(typeof Test.prototype.methodName)
VM153:1 function
更新
我创建了一个非常简单的测试来比较类中定义的方法和原型中指定的方法的性能。若结果可信,在Chrome58中调用类方法要慢5%,但在Firefox中原型要慢14%
我建议使用您用例中的真实数据运行实际性能测试,然后为Chrome和/或Firefox提交适当的bug。这一要求背后的原因是什么?PS:ES2015类方法可通过
prototype
获得。我不理解这个问题。你能提供一些例子吗?“在这种情况下原型会表现得更好”——这毫无意义:类是用原型实现的。@zerkms原型方法与类方法。什么对你没有意义?那些链接什么都没有,与此无关。使用ES6类将生成适当的原型方法。您所指的链接是在构造函数中创建函数,而不是将它们放置在原型中。当然,相比之下,这些函数的性能会很差,每次创建新实例时都会创建这些函数。“在Chrome58中调用类方法的速度要慢5%——这里不可复制。