HarmonyOS 鸿蒙Next:emitter分发的实体对象在接收处统一变成了object类型 丢失了源对象的自有方法?

发布于 1周前 作者 vueper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next:emitter分发的实体对象在接收处统一变成了object类型 丢失了源对象的自有方法?
<markdown _ngcontent-xuc-c237="" class="markdownPreContainer">

function emit(eventId: string, options: Options, data?: GenericEventData): void; 这是调用的api 看方法就知道传一个声明的泛型 传一个实体类型

示例代码如下

export class UserInfo {
  nickname: string = ""
  userId: number = 0
  getNickName():string{
    return this.nickname
  }

constructor(nickname: string, userId: number) { this.nickname = nickname; this.userId = userId; }

} emiter.emit<UserInfo>(“User”, { priority: emitter.EventPriority.IMMEDIATE }, { data: new User(“zhangsan”,11) })

emitter.on<UserInfo>(“User”, (data) => { console.info(收到新消息=${<span class="hljs-built_in"><span class="hljs-built_in">JSON</span></span>.stringify(data)}) data.getNickName()//这里直接报undefine }) <button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 4px; right: 8px; font-size: 14px;">复制</button>

很明显emiter在分发过程中 把真对象UserInfo转成了Object 我怀疑分发过程中对对象就行了JOSN序列化再反序列化 为啥不直接把源对象进行分发呢 这一点也不面向对象啊 包括现在流行的几个网络请求库返回的实体类也都是JSON.pase的object类型 并不是真对象 感觉这种操作完全违背了类型安全 这导致后续的操作都不安全了。希望官方能改进下

</markdown>

关于HarmonyOS 鸿蒙Next:emitter分发的实体对象在接收处统一变成了object类型 丢失了源对象的自有方法?的问题,您也可以访问:https://www.itying.com/category-93-b0.html 联系官网客服。
回到顶部