HarmonyOS ets不支持匿名类吗?

如题:HarmonyOS ets不支持匿名类吗?

阅读 701
1 个回答

不支持,需要显式标注对象字面量的类型,可以参考以下文档https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/typescript-to-arkts-migration-guide-V5\#%E9%9C%80%E8%A6%81%E6%98%BE%E5%BC%8F%E6%A0%87%E6%B3%A8%E5%AF%B9%E8%B1%A1%E5%AD%97%E9%9D%A2%E9%87%8F%E7%9A%84%E7%B1%BB%E5%9E%8B

建议使用嵌套类实现(类内部嵌套匿名类)。因为使用匿名类创建的对象类型未知,这与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();
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进