做网站便宜还是app便宜,图案生成器,广州番禺楼盘,vuecms网站开发关键词#xff1a;嵌套对象、类型、递归、未知类型
目录
使用 Record 与 ESObject 定义未知对象类型
递归打印未知类型对象的key 在鸿蒙应用开发中#xff0c;所有的数据都必须定义类型#xff0c;且不存在 any 类型#xff0c;那么我们当遇到 key 值可能随时变化的情况…关键词嵌套对象、类型、递归、未知类型
目录
使用 Record 与 ESObject 定义未知对象类型
递归打印未知类型对象的key 在鸿蒙应用开发中所有的数据都必须定义类型且不存在 any 类型那么我们当遇到 key 值可能随时变化的情况时如何获取该 object 中每一个 key 对应的数据呢
本期以如下 object 为例下方对象报文可能会根据使用时间或服务商的变化153 字段可能会变成 278 等未知字符串、5G 字段可能会变成 4G那么当 key 值不断变化的同时应如何获取 isShow 字段的 Y 值
cfg: {153: {5G: {isShow: Y}}
} 使用 Record 与 ESObject 定义未知对象类型
在鸿蒙中已经不支持索引签名的类型写法如[key: string]: string | number所以需要使用提供的 Record 与 ESObject 类型在复杂类型场景使用所以我们可以直接嵌套定义如下类型即可。
type objType Recordstring, Recordstring, Recordstring, Recordstring, string
let obj: objType {cfg: {153: {5G: {isShow: Y}}}
}
注其他明确 key 与 value 类型的场景不建议使用 Record 与 ESObject 类型养成良好开发习惯标注好对应数据类型。 递归打印未知类型对象的key
鸿蒙中不支持 for... in 形式的打印所以对于该种复杂嵌套对象我们可以自行编写简单的 for 循环递归调用即可。
/*** 打印对象所有的 key* param obj*/
handleKey(obj: objType | string) {let keys Object.keys(obj);for (let i 0; i keys.length; i) {console.log(luvi keys[i]);if (typeof obj[keys[i]] object) {this.handleKey(obj[keys[i]])continue}// 打印 isShow 最终值if (keys[i] isShow) {console.log(luvi isShow最终值 obj[keys[i]]);break}}
}// 调用
this.handleKey(obj)
输出结果 该篇文章为开发时临时记录开发经验如上若对 TS 基础类型写法存在疑惑和查看 TS 官方文档Record 与 ESObject 类型为鸿蒙的 AtkTS 类型详细用法可前往 HarmonyOS 开发者官网了解。