私は文字列番号をjavascript番号にキャストするデコレータを持っています。例えば、"87"
→87
。なぜ私の財産はデコレータのObject.definePropertyの後に消滅しますか?
コードは非常に簡単です:
function digit(target: any, key: string) {
// property value
var _val = this[key];
// property getter
var getter =() => _val;
// property setter
var setter = (newVal) => _val = parseInt(newVal)
// Create new property with getter and setter
Object.defineProperty(target, key, {
get: getter,
set: setter,
enumerable: true,
configurable: true,
});
}
class User {
@digit
public id: number;
public isActive: boolean;
constructor(instanceData) {
this.id = instanceData.id;
this.isActive = instanceData.isActive;
}
}
let user = new User({
id: '712',
isActive: '1'
})
console.log([user.id]) // [ 712 ] as expected
console.log(user) // Person { isActive: '1' }
は、idフィールドは、第二にconsole.logに表示されないのはなぜ、どのように私はそれを表示させることができますか? 私はそれにアクセスできますが、コンソールには表示されません。
ありがとうございます!インスタンスプロパティのproperty decoratorため