2017-02-21 8 views
0

Когда я создаю класс со строковым полем, он всегда преобразуется в назначение в конструкторе. Возможно ли сделать это на прототипе, чтобы он делился вместо новой строки на один экземпляр?Как создать строку в прототипе класса в 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; 
}()); 

ответ

4

Да, это возможно, и это, вероятно, более прямо вперед, что вы себе ...

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

Если вы заинтересованы в рассуждениях, почему нет никакого особенного ключевое слово, чтобы определить «прототип член "внутри определения класса, вы можете узнать больше об этом here. Найдите комментарий от ahejlsberg (Anders Hejlsberg).

Вы также можете сделать переменную static, и в этом случае она будет храниться в функции конструктора \ class.

+0

Я действительно хочу, чтобы он был унаследован в моем случае (не статическом) ... Да, это то, что я искал! –