Typescript 如何在没有getter和setter的情况下动态验证属性?
我制作了一个简单的装饰器来自动将布尔值转换为布尔值:Typescript 如何在没有getter和setter的情况下动态验证属性?,typescript,validation,decorator,Typescript,Validation,Decorator,我制作了一个简单的装饰器来自动将布尔值转换为布尔值:'true'变成true export const AutoConvertToBoolean = () => (target, property, descriptor?): any => { const KEY = Symbol('key'); return { set: function (value) { const isTrue = value.toString() === 'true';
'true'
变成true
export const AutoConvertToBoolean = () => (target, property, descriptor?): any => {
const KEY = Symbol('key');
return {
set: function (value) {
const isTrue = value.toString() === 'true';
const isFalse = value.toString() === 'false';
if (isTrue) {
this[KEY] = true;
} else if (isFalse) {
this[KEY] = false;
} else {
throw new Error('cannot set value as boolean');
}
},
get: function () {
return this[KEY];
},
enumerable: true,
configurable: true
};
};
但是,它使该属性成为访问器属性而不是数据属性。这样,价差运营商就无法销售
class MyClassBoolean {
@AutoConvertToBoolean()
shouldBeABoolean: any;
}
const d = new MyClassBoolean();
d.shouldBeABoolean=true;
const b={
...d
}
b.shouldBeABoolean //is undefined
有办法避免吗