TypeScript に次のようなプロパティ定義を発行させるにはどうすればよいですか。
Object.defineProperties(this, {
view: {
value: view,
enumerable: false,
writable: false,
configurable: false
},
});
TypeScript に次のようなプロパティ定義を発行させるにはどうすればよいですか。
Object.defineProperties(this, {
view: {
value: view,
enumerable: false,
writable: false,
configurable: false
},
});
にコンパイルされるTypeScriptでとget
を使用できます。set
Object.defineProperties
これはECMAScript5の機能であるため、ES3(コンパイラーのデフォルト)を対象としている場合は使用できません。ES5をターゲットにすることに満足している場合は--target ES5
、コマンドに追加してください。
TypeScript:
class MyClass {
private view;
get View() { return this.view; }
set View(value) { this.view = value }
}
コンパイル先:
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;
})();
ただし、列挙可能で構成可能な設定を完全に制御したい場合は、生のObject.defineProperties
コードを使用できます。
すべてのプロパティをそのように出力したい場合、これは現在サポートされていません。CodePlex サイトで問題を提出し、ユース ケースと要件の詳細を記載することをお勧めします。
--target ES5 を指定してコンパイルすると、次のようになります。
class n {
get foo() { return 3; }
bar() { return 5; }
}
次のコードが生成されます。
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;
})();