如何在TypeScript的类原型上创建一个字符串

时间:2017-02-21 21:29:46

标签: typescript

当我使用字符串字段创建一个类时,它总是会转换为构造函数中的赋值。是否有可能使它成为原型,以便它共享而不是每个实例的新字符串?

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;
}());

1 个答案:

答案 0 :(得分:4)

是的,这是可能的,而且你想象的可能更直接......

class A {
  public foo: string;
}
A.prototype.foo = 'im shared between instances';

如果您对原因感兴趣,为什么没有特殊的关键字来定义'原型成员'在类定义中,您可以阅读有关它的更多信息here。寻找ahejlsberg(Anders Hejlsberg)的评论。

您也可以将变量设为static,在这种情况下,它将存储在构造函数function \ class中。