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