首页 > 其他分享 >ts Symbol 属性类型的特点

ts Symbol 属性类型的特点

时间:2024-06-30 23:33:29浏览次数:1  
标签:sy console log Symbol ts kkc 属性

概论

Symbol 是一种用于创建唯一标识符的原始数据类型。
Symbol 通常用作对象属性的键,以避免属性名冲突。
Symbol.for() 可以在全局 Symbol 注册表中创建或查找 Symbol。
内置 Symbol 用于定义语言级别的行为和协议。

Symbol 属性与普通属性的区别

Symbol 属性不会出现在普通的对象属性枚举操作中,比如 for...in 循环或 Object.keys() 方法。你可以使用 Object.getOwnPropertySymbols() 获取对象的 Symbol 属性。

测试代码

const sy=Symbol("from")
interface  Kkc{
  [k:string]:any,
  [sy]:string
}
let kkc:Kkc;

kkc={
  name:"sfkjsdf",
  [sy]:"lnvslkdjfs"
}

console.log(kkc,"kkc")

console.log(kkc[sy],"kkc_sy") //打印获取symbol属性的方式
//新增一个同名的from属性,但是不会影响Symbol("from") 还是一个属性	
kkc.from="slfjslkf" //还是可以赋值from属性,不影响原来的Symbol中定义的from属性

// Symbol 不可枚举,所以打印不出symbol对象
for(let k in kkc){
  console.log(k,"kkc_key")
}
console.log(kkc,"kkc2")

image


kkq=Symbol("23423423")

kkq=23423423

console.log(kkq,"kkq")


const sy:unique symbol=Symbol("from")
const sy2:unique symbol=Symbol("from")
interface  Kkc{
  [k:string]:any,
  [sy]:string,
  [sy2]:string
}
let kkc:Kkc;

kkc={
  name:"sfkjsdf",
  [sy]:"lnvslkdjfs",
  [sy2]:"slfjslkfjslkfd"
}

console.log(kkc,"kkc")

console.log(kkc[sy],"kkc_sy")

kkc.from="slfjslkf"


for(let k in kkc){
  console.log(k,"kkc_key")
}
console.log(kkc,"kkc2")


let kki:symbol=Symbol("child")

console.log(kki,"kki")

let kkd:symbol=Symbol("child")


console.log(kkd,"kkd")

console.log(kki===kkd,"kki===kkd")
/**
 * 打印结果
 * Symbol(child) 'kki'
myts.ts:406 Symbol(child) 'kkd'
myts.ts:408 false 'kki===kkd'

说明symbol类型的数据是唯一的
 */

console.log(Symbol.for("child"),"get_Symbol")
console.log(Symbol("child")===Symbol("child"),"Symbol('child')===Symbol('child')")

总结

symbol 类型让对象的属性不可能枚举,且唯一且隐式。
创建symbol类型通过Symbol函数创建.

标签:sy,console,log,Symbol,ts,kkc,属性
From: https://www.cnblogs.com/jocongmin/p/18277164

相关文章

  • 文件时间属性
    文件的时间为什么要学习关于文件属性,因为我们的文件,不要认为内容没有发生改变,你的文件就没有被人动过1、有人偷看了你的密码文件2、有人偷偷修改了你的重要文件,肉眼无法观察出来3、有人偷偷修改了你的文件属性,你却还不知道关于文件的属性,有如下三个时间,可以更加清晰的了解你......
  • cesium 添加 Echarts 图层(空气质量点图)
    cesium添加Echarts图层(下面附有源码)1、实现思路1、在scene上面新增一个canvas画布2、通坐标转换,将经纬度坐标转为屏幕坐标来实现3、将ecarts中每个series数组中元素都加coordinateSystem:‘cesiumEcharts’2、示例代码<!DOCTYPEhtml><htmllang="en"><hea......
  • ArcTs布局入门01——线性布局(Row/Column)
    如果你对鸿蒙开发感兴趣,加入“Harmony自习室”吧~......
  • ts Object object {} 的区别
    概论在TypeScript中,object类型是一个非原始类型的标志,表示任何不是number、string、boolean、symbol、null或undefined的值。因此,object类型本身不允许null或undefined的赋值。Object和{}类型等同,object是ts限定数组或者对象的类型。代码测试letffa:Object;letffa2:......
  • [HBM] HBM TSV (Through Silicon Via) 结构与工艺
    依公知及经验整理,原创保护,禁止转载。专栏《深入理解DDR》全文3300字。1概念1.1什么是HBMTSV使用TSV堆叠多个DDRDRAM成为一块HBM,成倍提高了存储器位宽,一条位宽相当于高速公路的一条车道,车道越多,在相同的车速下,传输运输量自然越大。1.2TSV优点(1)高密......
  • The this Pointer (this 指针) and An Array of Objects (对象数组)
    ThethisPointer[this指针]andAnArrayofObjects[对象数组]1.The`this`Pointer(`this`指针)2.AnArrayofObjects(对象数组)References1.ThethisPointer(this指针)classStock{private: doubletotal_val_; ...public: double......
  • 内网穿透之不出网上线CobaltStrike技巧
    目录前言smbbeacon上线tcplistener转发上线http代理上线tcpbeacon正向连接上线题外话—cs和msf的权限传递cs派生给msfmsf派生给cs前言出网or不出网?目标可以正常访问互联网,可直接在目标机挂socks代理或直接CS上线。而更多的情况是,内网中的服务器和主机不通外网,这样通常情......
  • CF 1968 F. Equal XOR Segments (*1800) 思维
    CF1968F.EqualXORSegments(*1800)思维题意:给你一个长度为\(n\)的数组,如何可以把数组分成\(k(k>1)\)组,并且使得每组的异或和相等,那么这个数组就是完美的。现在给你\(q\)组询问,每次给你\(l,r\)。请你判断\(a_l\)到\(a_r\)之间是否是完美的。思路:对于每次询问......
  • Lights
    题目信息题目链接LuoguCF1907G思路分析如果我们把每一个关系都转化为一条无向边,则\(n\)个点会有\(n\)条边,并且每一个点的度数至少是\(1\),所以是一颗基环树森林。我们分别看看每一个数。一棵树一定会有一个环,首先环外树的决策方案是一定的,一定是将每一个权值为\(1\)的......
  • verilog写12 小时时钟(带上午/下午指示器)计数器(HDLbits Count clock)
    Createasetofcounterssuitableforuseasa12-hourclock(witham/pmindicator).Yourcountersareclockedbyafast-running clk,withapulseon ena wheneveryourclockshouldincrement(i.e.,oncepersecond).reset resetstheclockto12:00AM.......