typescript - 如何在 TypeScript 中自定义属性

标签 typescript defineproperty

如何让 TypeScript 发出属性定义,例如:

Object.defineProperties(this, {
    view: {
        value: view,
        enumerable: false,
        writable: false,
        configurable: false
    },
});

最佳答案

您可以在 TypeScript 中使用 getset,它们会编译成 Object.defineProperties

这是 ECMAScript 5 的一项功能,因此如果您的目标是 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 代码。

关于typescript - 如何在 TypeScript 中自定义属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12696250/

相关文章:

Typescript - 应用程序范围的状态(单例?)

Javascript - defineProperty 和直接在对象上定义函数的区别

javascript - 将 JavaScript getter/setter 添加到 native 不可配置的属性

d3.js - Typescript 期望从 d3.nest().rollup() 中的辅助函数返回 undefined

javascript - getter 方法提供意外的引用

javascript - 如何正确地将其绑定(bind)到 Javascript 中的 getter/setter

typescript 分配一个空字符串而不是 bool 值

reactjs - 当使用 React Component 作为参数时为 "Type is missing the following properties, context, setState"

typescript - 如何检查 Puppeteer 页面当前是否处于导航状态?