我很惊讶地发现,如果从未为其分配值,那么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;
}());
我如何获得这种行为?
答案 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;}
}