Hogy jutok géppel bocsát ki a tulajdonságokat, mint például:
Object.defineProperties(this, {
view: {
value: view,
enumerable: false,
writable: false,
configurable: false
},
});
Hogy jutok géppel bocsát ki a tulajdonságokat, mint például:
Object.defineProperties(this, {
view: {
value: view,
enumerable: false,
writable: false,
configurable: false
},
});
Használhatja getés setgéppel, amely összeállítja a Object.defineProperties.
Ez egy ECMAScript 5 funkció, így nem lehet használni, ha célzott ES3 (alapértelmezett a fordító). Ha elégedett a cél ES5, add --target ES5a parancs.
Gépelt:
class MyClass {
private view;
get View() { return this.view; }
set View(value) { this.view = value }
}
Gyűjt össze:
var MyClass = (function () {
function MyClass() { }
Object.defineProperty(MyClass.prototype, "View", {
get: function () {
return this.view;
},
set: function (value) {
this.view = value;
},
enumerable: true,
configurable: true
});
return MyClass;
})();
De ha a teljes irányítást a beállítás felsorolható és konfigurálható - akkor még mindig használja a nyers Object.definePropertieskódot.
Kerestem pontosan ugyanezt, amikor belebotlottam géppel Handbook: Lakberendezők . A „módszer Lakberendezők” bekezdés meghatározzák @enumerabledekoratőr gyár, amely úgy néz ki, mint ez (én csak a fájl létrehozásával onnan):
function enumerable(value: boolean) {
return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
descriptor.enumerable = value;
};
}
és használják, mint ez:
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
@enumerable(false)
greet() {
return "Hello, " + this.greeting;
}
}
Tehát egy másik módja az, az, a használat révén a lakberendezők.
PS:
Ez a funkció csak experimentalDecoratorsflag kell átadni tsc, vagy állítsa be tsconfig.json.
Ez jelenleg nem támogatott, ha szeretné az összes tulajdonságait kibocsátandó ilyesmi. Én azt javasolnám a bejelentés egy probléma a CodePlex helyszínen részleteit, hogy mi az Ön használati és követelményeket.
Ha nem fordítasz --target ES5, akkor van valami, mint ez:
class n {
get foo() { return 3; }
bar() { return 5; }
}
Amely termel ezt a kódot:
var n = (function () {
function n() { }
Object.defineProperty(n.prototype, "foo", {
get: function () {
return 3;
},
enumerable: true,
configurable: true
});
n.prototype.bar = function () {
return 5;
};
return n;
})();