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
有办法避免吗