HarmonyOS 鸿蒙Next:emitter分发的实体对象在接收处统一变成了object类型 丢失了源对象的自有方法?
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 联系官网客服。