HarmonyOS ets不支持匿名类吗?

HarmonyOS ets不支持匿名类吗?

HarmonyOS
2024-11-28 10:16:42
浏览
收藏 0
回答 2
待解决
回答 2
按赞同
/
按时间
因为活着就一定行

是的呢, ArkTS 目前确实不支持匿名类。想象一下,匿名类就像参加派对时没有佩戴名牌的客人,你不知道他们属于哪个家庭或团体。在HarmonyOS ArkTS的世界里,一切都是井然有序的,每个类都需要有一个明确的身份,这样才能保证程序的稳定性和可维护性。


还有啊,ArkTS不支持structural typing和对象字面量的类型,这也使得匿名类在这个环境中难以生存。因此,如果你需要在ArkTS中使用具有类似匿名类功能的代码,可以考虑使用嵌套类来实现。这样,你就可以在保持代码清晰和功能性的同时,避免使用匿名类所带来的问题。


其实,虽然ArkTS不支持匿名类可能会让你在编码时感到一丝限制,但它实际上是帮助你编写更规范、更稳定的程序。希望你能理解并喜欢这个有趣而有序的编程世界!

已于2024-11-28 11:54:58修改
分享
微博
QQ
微信
回复
2024-11-28 11:54:40
zbw_apple

​不支持,需要显式标注对象字面量的类型,可以参考以下文档。​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(); 
  } 
}
分享
微博
QQ
微信
回复
2024-11-28 15:02:33
相关问题
http不支持cancel方法
160浏览 • 1回复 待解决
HarmonyOS Object不支持 ... 展开符
239浏览 • 1回复 待解决
HarmonyOS ArkTS是否支持使用匿名
530浏览 • 2回复 待解决
鸿蒙工程不支持aar本地导入
8402浏览 • 1回复 已解决
Lite Wearable 不支持 http 网络接口
3497浏览 • 1回复 待解决
web组件不支持localstorage
784浏览 • 1回复 待解决
HarmonyOS 不支持通过索引访问字段
263浏览 • 1回复 待解决
api9不支持三方包
3100浏览 • 1回复 待解决
应用开发中的CSS不支持伪元素
6537浏览 • 1回复 待解决
HarmonyOS关于mqtt不支持ssl协议问题
508浏览 • 2回复 待解决
HarmonyOS react-native-fs不支持downloadFile
445浏览 • 1回复 待解决
HarmonyOS imagePacker不支持编码成jpg格式
412浏览 • 1回复 待解决