在HarmonyOS NEXT中 ets不支持匿名类吗?

阅读 670
1 个回答

不支持,需要显式标注对象字面量的类型,可以参考以下文档https://developer.huawei.com/consumer/cn/doc/harmonyos-guides...
建议使用嵌套类实现(类内部嵌套匿名类)。因为使用匿名类创建的对象类型未知,这与ArkTS不支持structural typing和对象字面量的类型冲突,可以参考以下方案:

export interface IVoiceRecordListener<T> { 
  onSuccess:(t: T)=> void 
  onFailed:(code: string, reason: string)=> void 
} 
 
let voiceRecordListenerInstance: IVoiceRecordListener<void> = { 
  onSuccess: () => { 
    console.log('success') 
  }, 
  onFailed: () => { 
    console.log('failed') 
  } 
}
// 原先 
class A { 
  foo() { 
    let a = new class { 
      v: number = 123 
    }(); 
  } 
} 
// 现在 
class A { 
  foo() { 
    class B { 
      v: number = 123 
    } 
    let b = new B(); 
  } 
}