在TypeScript中获取并设置

我正在尝试为属性创建get和set方法:

private _name: string;

Name() {
    get:
    {
        return this._name;
    }
    set:
    {
        this._name = ???;
    }
}

什么是关键字来设置一个值?


Typescript使用类似于ActionScript3的getter / setter语法。

class foo {
    private _bar:boolean = false;
    get bar():boolean {
        return this._bar;
    }
    set bar(theBar:boolean) {
        this._bar = theBar;
    }
}

这将产生这个Javascript,使用Ecmascript 5 Object.defineProperty()功能。

var foo = (function () {
    function foo() {
        this._bar = false;
    }
    Object.defineProperty(foo.prototype, "bar", {
        get: function () {
            return this._bar;
        },
        set: function (theBar) {
            this._bar = theBar;
        },
        enumerable: true,
        configurable: true
    });
    return foo;
})();

所以要使用它,

var myFoo = new foo();
if(myFoo.bar) {         // calls the getter
    myFoo.bar = false;  // calls the setter and passes false
}

但是,为了使用它,您必须确保TypeScript编译器的目标是ECMAScript5。 如果您正在运行命令行编译器,请使用--target标志,像这样;

tsc --target ES5

如果使用Visual Studio,则必须编辑项目文件以将标志添加到TypeScriptCompile构建工具的配置中。 你可以在这里看到:

正如@DanFromGermany在下面建议的那样,如果你只是读和写一个像foo.bar = true这样的本地属性,那么拥有setter和getter对就是矫枉过正。 如果您需要执行某些操作(如日志记录,只要读取或写入属性),则可以随后添加它们。


Ezward已经提供了一个很好的答案,但是我注意到其中一条评论询问它是如何使用的。 对于像我这样偶然发现这个问题的人来说,我认为将它链接到Typescript网站上有关getter和setter的官方文档是很有用的,因为这样可以很好地解释这一点,并且希望随着更改一直保持最新状态制作并显示示例用法:

http://www.typescriptlang.org/docs/handbook/classes.html

特别是,对于那些不熟悉它的人,请注意,您不会将“get”一词并入到对getter的调用中(对于setters也是如此):

var myBar = myFoo.getBar(); // wrong    
var myBar = myFoo.get('bar');  // wrong

你应该这样做:

var myBar = myFoo.bar;  // correct (get)
myFoo.bar = true;  // correct (set) (false is correct too obviously!)

给一个类如:

class foo {
  private _bar:boolean = false;

  get bar():boolean {
    return this._bar;
  }
  set bar(theBar:boolean) {
    this._bar = theBar;
  }
}

那么私人'_bar'属性的'bar'getter将被调用。


这是一个应该指向正确方向的实例:

class Foo {
    _name;

    get Name() {
        return this._name;
    }

    set Name(val) {
        this._name = val;
    }
}

JavaScript中的getters和setter只是普通的函数。 setter是一个函数,它接受一个参数,其值是被设置的值。

链接地址: http://www.djcxy.com/p/40683.html

上一篇: get and set in TypeScript

下一篇: cloning object