HarmonyOS Next中为什么Rest参数语法会删除来自泛型对象中不可展开的成员?

HarmonyOS Next升级API 11后为什么Rest参数语法会删除来自泛型对象中不可展开的成员?

class Thing {
  someProperty = 42;
  someMethod() {
    // ...
  }
}
function foo<T extends Thing>(x: T) {
  let { someProperty, ...rest } = x;
  // Used to work, is now an error!
  // Property 'someMethod' does not exist on type 'Omit<T, "someProperty" | "someMethod">'.
  rest.someMethod();
}
阅读 182
1 个回答

OpenHarmony SDK中TypeScript版本从4.2.3升级至4.9.5版本,支持TS语言的新语法特性以及提供更强的类型检查能力,但存在少数与之前版本不兼容的语法特性。
从泛型对象中解构属性时,以前会假定所有属性都是可解构的,现在会严格分析属性是否可以被解构。不应该被解构的属性如:私有属性、私有方法、静态属性等。

建议从泛型对象中解构属性时,确保属性属于可解构类型。

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