¿Cómo llego mecanografiado para emitir definiciones de propiedades tales como:
Object.defineProperties(this, {
view: {
value: view,
enumerable: false,
writable: false,
configurable: false
},
});
¿Cómo llego mecanografiado para emitir definiciones de propiedades tales como:
Object.defineProperties(this, {
view: {
value: view,
enumerable: false,
writable: false,
configurable: false
},
});
Puede utilizar gety seta máquina de escribir, que compilar en Object.defineProperties.
Esta es una característica de ECMAScript 5, por lo que no se puede utilizar si se dirigen a ES3 (el valor por defecto para el compilador). Si usted es feliz para apuntar ES5, añadir --target ES5a su comando.
Mecanografiado:
class MyClass {
private view;
get View() { return this.view; }
set View(value) { this.view = value }
}
Compila a:
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;
})();
Pero si quieres un control total de la configuración enumerables y configurable - que aún se podía utilizar la prima Object.definePropertiesde código.
Yo estaba buscando exactamente lo mismo cuando me topé Manual mecanografiado: decoradores . En "Método decoradores" el párrafo que definen @enumerablela fábrica decorador, que se parece a esto (estoy simplemente copiar y pegar desde allí):
function enumerable(value: boolean) {
return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
descriptor.enumerable = value;
};
}
y lo utilizan como esto:
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
@enumerable(false)
greet() {
return "Hello, " + this.greeting;
}
}
Así pues, otra manera de hacer frente a ella, es a través del uso de decoradores.
PD:
Esta función requiere experimentalDecoratorsla bandera que se pasa a tsco conjunto de tsconfig.json.
Esto no es compatible actualmente si desea que todas las propiedades a ser emitidos por el estilo. Me gustaría recomendar la presentación de un tema en el sitio CodePlex con detalles acerca de lo que su caso y los requisitos de uso son.
Si lo hace compilar con --target ES5, puede tener algo como esto:
class n {
get foo() { return 3; }
bar() { return 5; }
}
Que produce este código:
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;
})();