set、map、weakSet、weakMap
// set:天然去重属性,引用类型除外 const s:Set<number> = new Set([1,2,2,3]) // console.log(s); //1,2,3 s.add(4) // 添加 s.delete(1) // 删除 s.has(2) // 判断是否有2 s.clear() // 清空 // 支持的遍历方法 s.entries s.forEach s.keys s.values // set有迭代器属性 for (const element of s) { } //map:键值对形式,键值可以引用类型格式 let m:Map<string,any> = new Map([['1',{name:'bai'}]]) // 跟set一样的 m.set('2',{age:24}) // 添加 m.get('1') // 获取值 m.delete('1') // 删除 m.has('2') // 判断是否有2 m.clear() // 清空 // 支持的遍历方法 m.entries m.forEach m.keys m.values // set有迭代器属性 for (const element of m) { } // weakMap:是弱引用的意思,要求键值一定是引用类型,不会计入垃圾回收机制 const wm:WeakMap<object,any> = new WeakMap() let obj:any = {name: 'bai'} // 根据垃圾回收机制,此次引用次数为1次 let anlph = obj // 此时引用次数为2次 wm.set(obj,'234') // 但是weakMap不会添加引用次数,因此当前2次的引用被消除后,将获取不到值 console.log(wm.get(obj)); // '234' obj = null // 消除引用次数 -1 anlph = null // 消除引用次数 -1 console.log(wm.get(obj)); // undefined // 同时因为v8回收机制需要200毫秒左右,当你console.log(wm)显示还有值,因此weakMap禁止被遍历 // wm.forEach // 禁止 // weakSet同理有弱引用性、禁止被遍历、要求一定是引用类型, const ws:WeakSet<object> = new WeakSet() let a:any = {age:11} ws.add(a) console.log(ws.has(a)); // true a = null console.log(ws.has(a)); // 当引用对象消失时,ws内的值也消失了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现