当前位置: 首页 > news >正文

【ts】for in对象时,ts如何正确获取对应的属性值

第一种:for…in + keyof:适合需要遍历对象属性键并动态访问值的场景。

  • keyof typeof obj是ts的类型操作符,用于获取对象obj的所有属性键的联合类型(“name” | “age” | “city”)
  • 通过obj[key keyof typeof obj],ts知道key是合法的属性名,从而允许安全的访问属性值
const obj = {name: "Alice",age: 25,city: "New York"
};for (const key in obj) {// key 是属性名(字符串类型)const value = obj[key as keyof typeof obj]; // 通过 key 获取属性值console.log(key, value);
}
  • 过滤原型链属性:
    for in会过滤obj自身的可枚举属性和原型链上的可枚举属性;如果只想获取obj自身的属性,可以使用obj.hasOwnProperty()过滤
for(const key in obj) {if(obj.hasOwnProperty(key)) {const value = obj[key as keyof typeof obj]console.log(value)}
}
另一种写法
interface Person {name: string;age: number;city: string;
}const obj: Person = {name: "Alice",age: 25,city: "New York"
};for (const key in obj) {if (obj.hasOwnProperty(key)) {const value = obj[key as keyof Person]; // 明确 key 的类型console.log(`${key}: ${value}`);}
}

第二种:Object.entries()

如果不需要遍历原型链的属性,可以用更为现代和类型安全的方式:Object.entries()

Object.entries(obj).forEach([key, value] {console.log(key, value)
})
http://www.dtcms.com/a/182375.html

相关文章:

  • sched_fair 调度:负载权重、虚拟运行时间与最小虚拟时间
  • Js 判断浏览器cookie 是否启用
  • 2025盘古石初赛WP
  • linux 开发小技巧之git增加指令别名
  • 路由策略和策略路由的区别以及配置案例
  • 用Python绘制动态彩色ASCII爱心:技术深度与创意结合
  • FHE与后量子密码学
  • 解决使用宝塔Linux部署前后端分离项目遇到的问题
  • Nakama:让游戏与应用更具互动性和即时性
  • 相机Camera日志分析之八:高通Camx HAL架构opencamera三级日志详解及关键字
  • spring中的@Inject注解详情
  • linux perf top分析系统性能
  • 深入解析JavaScript变量作用域:var、let、const全攻略
  • [架构之美]从零开始整合Spring Boot与Maven(十五)
  • upload-labs靶场通关详解:第四关
  • 【typenum】 0 配置文件(Cargo.toml)
  • SemanticSplitterNodeParser 和 Sentence-BERT 的区别和联系是什么
  • 前端敏感数据处理指南_JavaScript 加密方法全解析
  • 警惕C#版本差异多线程中的foreach陷阱
  • AI 驱动的开发工具
  • PyTorch API 7 - TorchScript、hub、矩阵、打包、profile
  • 【比赛真题解析】混合可乐
  • ISP接口隔离原则
  • [架构之美]linux常见故障问题解决方案(十九)
  • 【计算机视觉】优化MVSNet可微分代价体以提高深度估计精度的关键技术
  • Koodo Reader:功能强大、体验卓越的电子书阅读器
  • Android 应用开发入门案例:使用 Fragment 实现水果详情展示
  • Linux系统:虚拟文件系统与文件缓冲区(语言级内核级)
  • 蓝牙身份证阅读器使用Uniapp调用二次开发demo
  • 湖北理元理律师事务所:债务优化如何实现还款与生活的平衡?