必需属性未定义

时间:2017-01-18 15:10:58

标签: typescript

我很惊讶地发现,如果从未为其分配值,那么TypeScript类属性可能会从已转换的输出中消失。

这个TypeScript类......

class Foo {
    value: any;
}

变为..

var Foo = (function () {
    function Foo() {
    }
    return Foo;
}());

Foo.value属性未声明为可选属性,因此我希望构造函数创建该属性,而不管它是否已赋值。

var Foo = (function () {
    function Foo() {
        Object.defineProperty(this, 'value', {});
    }
    return Foo;
}());

我如何获得这种行为?

1 个答案:

答案 0 :(得分:2)

保证此属性的最简单方法是为其指定一个值...显式的null应该适合你。

class Foo {
    value: any = null;
}

也始终输出构造函数属性:

class Foo {
    constructor(public value: any) { }
}

或者如果你迫切希望用Object.defineProperty ...

完成它
class Foo {
    private _foo: string;

    get foo() { return this._foo; }
    set foo(value: string) { this._foo = value;}
}