当前位置: 首页 > 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)
})

相关文章:

  • 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 驱动的开发工具
  • 数理+AI+工程,上海交大将开首届“笛卡尔班”招生约20名
  • 悬疑推理联合书单|虫神山事件
  • 万玲、胡春平调任江西省鹰潭市副市长
  • 纪录片《中国》原班人马打造,《船山先生》美学再升级
  • 吴勇强、高颜已任南京市委常委
  • 华为招聘:未与任何第三方开展过任何形式的实习合作