TypeScript:是否可以使用装饰器定义新的类成员?

时间:2016-01-12 21:03:38

标签: typescript

示例:

function Getter(target: any, key: string): void {
  let getter = () => this[key];
  /*  create "foobar" property from "_foobar" */
  Object.defineProperty(target, removeUnderscores(key), {
    get: getter,
    enumerable: true,
    configurable: true
  });
}

class Foo {
   @Getter 
   private _foobar: string;
   constructor() {
      this._foobar = "Hello World" // OK
      console.log(this.foobar) // Compiler error
   }
}

let foo = new Foo();
console.log(foo.foobar) // Compiler error

我想可以公开_foobar并将其重命名为foobar以避免创建新的属性名称,但尝试从外部修改该属性不会导致编译 - 时间错误,它会在内部或外部修改时导致运行时错误。

1 个答案:

答案 0 :(得分:0)

  

console.log(this.foobar)//编译器错误

您无法根据TypeScript装饰器基础结构的当前语义删除此编译器错误。