Есть ли способ достичь этого в TypeScript?
Почему бы и нет. Для этого это можно сделать в простом JavaScript, это легко должно быть достигнуто и в TypeScript. Как всегда всегда с функциями, scope - это ключевое слово для нашего подхода. Конструктор тогда, конечно, неправильно используется как замыкание без создания типов, которые отвечали бы, например, Container
через оператора typeof
. Такая заводская функция просто вернет другую функцию, которая затем будет использоваться как геттер/сеттер для закрытого начального значения конструктора.
машинопись пример ...
class Container {
constructor(storageValue: any) {
return (function (value: any) {
if (arguments.length !== 0) {
storageValue = value;
}
return storageValue;
});
}
}
... в простом JavaScript ...
var Container = (function ContainerClass() {
var Constructor = (function Container (storageValue) {
return (function (value) {
if (arguments.length !== 0) {
storageValue = value;
}
return storageValue;
});
});
return Constructor;
}());
var a = new Container(24);
console.log("a() : ", a()); // 24
console.log("a(4) : ", a(4)); // 4
console.log("a() : ", a()); // 4
var b = new Container(72);
console.log("b() : ", b()); // 72
console.log("b(5) : ", b(5)); // 5
console.log("b() : ", b()); // 5
console.log("a() : ", a()); // 4
Похоже, какие свойства для. – Stilgar