Object.defineProperty 在 typescript 中的问题

clipboard.png
在ts中以上代码会报错

[ts]
类型“{ enumerable: true; configurable: true; set: Function; get(): any; }”的参数不能赋给类型“PropertyDescriptor & ThisType<any>”的参数。
  不能将类型“{ enumerable: true; configurable: true; set: Function; get(): any; }”分配给类型“PropertyDescriptor”。
    属性“set”的类型不兼容。
      不能将类型“Function”分配给类型“(v: any) => void”。
        类型“Function”提供的内容与签名“(v: any): void”不匹配。

求大神告知如何解决?

阅读 4.6k
1 个回答

我这里是不报错的,例如下面的代码

function fn() {
  console.log("test");
}
function a() {
  console.log("test");
}

Object.defineProperty({}, "test", {
  enumerable: true,
  configurable: true,
  set: a || fn,
  get() {
    return 5;
  }
});

如果 set 上的值不是一个函数,就会报错。
你可以放出 this.option.set、noop 看一下他的类型

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题