当我使用字符串字段创建一个类时,它总是会转换为构造函数中的赋值。是否有可能使它成为原型,以便它共享而不是每个实例的新字符串?
class A {
a = 'hello'
b() { return this.a;}
}
// Transpiles into
var A = (function () {
function A() {
this.a = 'hello';
}
A.prototype.b = function () { return this.a; };
return A;
}());
// Is it possible to make it go on the prototype like functions do?
// No need for multiple instances of the string
var A = (function () {
function A() {}
A.prototype.b = function () { return this.a; };
A.prototype.a = 'hello';
return A;
}());
答案 0 :(得分:4)
是的,这是可能的,而且你想象的可能更直接......
class A {
public foo: string;
}
A.prototype.foo = 'im shared between instances';
如果您对原因感兴趣,为什么没有特殊的关键字来定义'原型成员'在类定义中,您可以阅读有关它的更多信息here。寻找ahejlsberg(Anders Hejlsberg)的评论。
您也可以将变量设为static,在这种情况下,它将存储在构造函数function \ class中。