HarmonyOS 鸿蒙Next 变量类型判断问题
HarmonyOS 鸿蒙Next 变量类型判断问题
@Observed
export class NewsChannelRouterParam {
id:number
title:string
constructor(id:number, title:string) {
this.id = id
this.title = title
}
}
2. 通过router获取页面传参,参数实际类型是NewsChannelRouterParam
let routerParam:Object = router.getParams()
Log.d(TAG, handleSwitchNewsChannel() routerParam: <span class="hljs-subst">${<span class="hljs-built_in">JSON</span>.stringify(routerParam)}</span>
) // 输出正确
if (routerParam instanceof NewsChannelRouterParam) { // 结果未进入该分支
Log.d(TAG, handleSwitchNewsChannel() -> NewsChannelRouterParam
)
this.newsChannelRouterParam = routerParam as NewsChannelRouterParam
}
想通过判别变量类型 进入指定分支避免类型错误, 但是实际运行的时候, 未进入分支代码, 查了一下TypeScript的语法, class 定义的类型 应该可以通过 instanceof 判断, 想问一下, 这里应该怎么判别变量类型?
更多关于HarmonyOS 鸿蒙Next 变量类型判断问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
这样获取routerParam试试:
let routerParam: NewsChannelRouterParam = router.getParams() as NewsChannelRouterParam
在TypeScript中,instanceof运算符的左操作数的类型必须为any类型、对象类型,或者它是类型参数,否则结果为false。在ArkTS中,instanceof运算符的左操作数的类型必须为引用类型(例如,对象、数组或者函数),否则会发生编译时错误。此外,在ArkTS中,instanceof运算符的左操作数不能是类型,必须是对象的实例。
更多关于HarmonyOS 鸿蒙Next 变量类型判断问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
0 0 不对把router.getParams(),返回的应该是键值对的k-v
你看看你这一条的输出
Log.d(TAG, `handleSwitchNewsChannel() routerParam: ${JSON.stringify(routerParam)}`) /
你要取对象NewsChannelRouterParam不应该用key取值么
在HarmonyOS鸿蒙Next中,对于变量类型判断,你可以使用RTTI(运行时类型识别)机制或者鸿蒙特定的类型信息接口。不过,鸿蒙系统在设计上更注重效率和安全性,因此直接的类型判断操作可能需要遵循特定的API或框架要求。
对于基本数据类型(如int、float等),由于它们的大小和表示在编译时已知,因此不需要运行时类型判断。而对于复杂类型(如类、结构体等),鸿蒙可能提供了类似于C++中typeid
或dynamic_cast
的功能,但具体实现和使用方式需参考鸿蒙的官方文档或API。
如果你正在使用鸿蒙的某个特定组件或框架(如ArkUI、ACE等),这些组件或框架可能提供了封装好的类型判断工具或方法。
例如,在ArkUI中,对于JS侧的类型判断,你可以使用JavaScript自身的类型判断机制,如typeof
、instanceof
等。而在原生模块或C++代码中,你可能需要依赖鸿蒙提供的类型信息接口或RTTI机制。
总之,在HarmonyOS鸿蒙Next中,进行变量类型判断时,应首先查阅鸿蒙的官方文档,了解鸿蒙提供的类型判断方法和API。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html