TypeScript 从入门到进阶之基础篇(四) symbol类型篇

在这里插入图片描述

系列文章目录

TypeScript 从入门到进阶系列

  1. TypeScript 从入门到进阶之基础篇(一) ts基础类型篇
  2. TypeScript 从入门到进阶之基础篇(二) ts进阶类型篇
  3. TypeScript 从入门到进阶之基础篇(三) 元组类型篇
  4. TypeScript 从入门到进阶之基础篇(四) symbol类型篇
    持续更新中…

文章目录

  • 系列文章目录
  • TypeScript 从入门到进阶系列
  • 前言
  • 一、symbol类型的使用
  • 二、symbol类型的使用场景
    • 1. 用作对象属性名:
    • 2. 用作常量:
    • 3. 用作私有属性或方法名:
  • 三、symbol类型的使用注意事项


前言

前面我们了解了 基础类型、引用类型、元组类型的使用,本章我们来了解TypeScript中如何使用symbol类型,当然 symbol类型要是属于JavaScript,可能有很多同学还不知道symbol

symbol类型 是 ES6 引入的一种新的原始数据类型,用来表示唯一的、不可变的值。Symbol值通过Symbol()函数生成,每个Symbol值都是唯一的,可以用于对象的属性名,从而避免属性名冲突的问题。自ECMAScript 2015起,symbol成为了一种新的原生类型。

一、symbol类型的使用

要创建一个Symbol值,可以使用Symbol构造函数,创建时可以穿一个唯一参数作为唯一标识。

注意:参数只能是number类型string 类型

//正确使用
const mySymbol = Symbol();
const mySymbol =Symbol('我是唯一标识');

二、symbol类型的使用场景

Symbol类型在JavaScript中是一种新的数据类型,它的主要用途是作为对象属性的唯一标识符。以下是一些Symbol类型的使用场景:

1. 用作对象属性名:

Symbol类型的值可以作为对象的属性名,这样可以确保属性的唯一性,避免属性名冲突的问题。

const obj = {};
const symbol1 = Symbol('foo');
const symbol2 = Symbol('foo');obj[symbol1] = 'value1';
obj[symbol2] = 'value2';console.log(obj[symbol1]); // 'value1'
console.log(obj[symbol2]); // 'value2'//也可以这样使用
const symbol3= Symbol();let objMap={[symbol3]:'我是值'
}console.log(objMap[symbol3]); // "我是值"

2. 用作常量:

Symbol类型的值是唯一且不可变的,可以作为常量使用。在这种情况下,使用相同的Symbol值可以确保常量的唯一性。

const LOG_LEVEL = {DEBUG: Symbol('debug'),INFO: Symbol('info'),ERROR: Symbol('error')
};function log(level) {if (level === LOG_LEVEL.DEBUG) {console.log('Debug message');} else if (level === LOG_LEVEL.INFO) {console.log('Info message');} else if (level === LOG_LEVEL.ERROR) {console.log('Error message');}
}log(LOG_LEVEL.INFO); // 'Info message'

3. 用作私有属性或方法名:

Symbol类型的值不会被默认遍历到对象的属性列表中,这使得它可以用作私有属性或方法名,不会被外部访问到。

const obj = {};
const privateProperty = Symbol('private');obj[privateProperty] = 'private value';console.log(obj[privateProperty]); // 'private value'
console.log(obj.privateProperty); // undefined

需要注意的是,Symbol类型的值不是字符串,虽然可以给Symbol传递一个描述参数,但描述参数只是作为标识符的可读性提示,不会影响Symbol的唯一性。

三、symbol类型的使用注意事项

使用symbol类型时有一些注意事项:

  1. Symbol是一种原始数据类型,可以用作对象属性的唯一标识符。每个symbol都是唯一且不可变的,不同于字符串类型的属性名可以重复。

  2. Symbol类型的变量不能通过直接访问来获取它们的值,因为它们没有固定的名称。相反,可以使用变量名和Symbol的描述符作为参数访问变量。例如:console.log(mySymbol)。

  3. 可以使用Symbol类型作为对象属性名。这样可以确保属性的唯一性。例如:const obj = {[mySymbol]: “value”}。

  4. Symbol类型的变量可以作为对象的私有属性,因为它的值不会被意外修改或覆盖。

  5. Symbol类型的变量在使用JSON.stringify()方法时会被忽略。这是因为JSON.stringify()默认情况下只序列化对象的可枚举属性,而Symbol类型的属性默认为不可枚举。

  6. 可以使用Object.getOwnPropertySymbols()方法来获取对象中所有的Symbol属性。

  7. Symbol类型的变量可以作为迭代器的唯一键,例如Symbol.iterator可以用于实现自定义迭代器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/601825.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win10关闭打开文件安全警告

1.使用场景 在流水线上,因车间刷软件的程序不能下发到每一台电脑上,会使用共享文件夹的形式来共享程序。每次打开会弹出一下窗口,影响员工生产。 需要将安全警告关闭。2.解决步骤 1.winR键打开运行窗口,输入gpedit.msc&#xff…

云原生学习系列之基础环境准备(单节点安装kubernetes)

一、环境要求 操作系统CentOS 7.x-86_x64 硬件配置:内存2GB或2G,CPU 2核或CPU 2核,需要在虚拟机中提前设置好,不然后续会报错 二、系统初始化 1、设置主机名 # 在master节点执行 hostnamectl set-hostname master01 2、配置主…

HTML的简单介绍

文章目录 1. HTML1.1 HTML 基础认识1.2 快速生成代码框架1.3 HTML 基础标签 1. HTML 1.1 HTML 基础认识 什么是HTML呢? HTML叫做超文本标记语言。超文本:例如图片,视频,文本,声音,表格,链接等…

C++的一点知识记录

时间记录:2024/1/6 类定义,一般在头文件中进行定义不进行实现,在源文件中进行实现 class Person{ public://公共属性和方法定义区Person();//构造函数定义~Person(){};//析构函数加实现int age;//定义属性void printAge();//定义方法 protec…

计算机环境安全

操作系统安全----比如windows,linux 安全标识--实体唯一性 windows---主体:账户,计算机,服务 安全标识符SID-Security Identifier 普通用户SID是1000,管理用SID是500 linux---主体:用户,用户组&#xf…

【前端】[vue3] vue-router使用

提示:我这边用的是typeScript语法,所以js文件的后缀都是ts。 安装vue-router: (注意:vue2引用vue-router3 vue3才引用vue-router4) npm install vue-router4src文件夹下面创建 router/index.ts(…

hb_zhyu编程的一路

人生历程: 开始: 走上编程或许并不是我的一开始的意愿,在小学我第一次接触积木编程,或许是它简单,又或许是我天赋异禀,在第一次接触就展现出异于常人的能力,并且产生浓厚的兴趣。 当我几乎可…

synchronized语法与Before/After模式

synchronized void method(){ ... } synchronized(obj){ ... } 不管是synchronized方法, 还是synchronized代码块, 都可以看做在“{”处获取锁, 在"}"处释放锁。 比较下使用synchronized的代码 与显式处理锁的代码。假设存在一个…

Halcon计算最小外接矩形Smallest_rectangle2

Halcon计算最小外接矩形Smallest_rectangle2 该算子用于求最小外接矩形。该算子的原型如下: smallest _rectangle2 (Regions : : : Row, Column, Phi, Lengthl, Length2)其各参数的含义如下。 参数1:Regions 表示输入的区域。 参数2和3:Row…

[HCTF 2018]Warmup

[HCTF 2018]Warmup wp 进入页面&#xff1a; 查看源码&#xff1a; 发现提示&#xff1a;source.php &#xff0c;直接访问&#xff0c;得到源代码&#xff1a; <?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){$whitelist [&qu…

SolidUI Gitee GVP

感谢Gitee&#xff0c;我是一个典型“吃软不吃硬”的人。奖励可以促使我进步&#xff0c;而批评往往不会得到我的重视。 我对开源有自己独特的视角&#xff0c;我只参与那些在我看来高于自身认知水平的项目。 这么多年来&#xff0c;我就像走台阶一样&#xff0c;一步一步参与…

【精通C语言】:深入解析C语言中的while循环

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; C语言详解 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一、while循环1.1语法1.2 执行过程解析1.3 break1.4 continue &#x1f324;️全篇总结 &…

Python从请求头中获取参数(Burp Suite)

目录 爬虫获取 需求 代码 从Burp Suite请求体中获取参数 爬虫获取 需求 url参数分三种情况 1. json格式 2. form格式 3. xml格式 已知入参情况有两种 1. Burp Suite 拷贝的请求头信息 2. 爬虫抓取的请求头信息 已知参数位置情况有两种 1. url路径中 2. post请求…

jquery图形验证码

效果展示 js图形随机验证码&#xff08;表单验证&#xff09; html代码片段 <form class"formwrap"><div class"item"><input type"text" id"code_input" value"" placeholder"请输入验证码"/>…

macOS跨进程通信: FIFO(有名管道) 创建实例

一&#xff1a; 简介 在类linux系统中管道分为有名管道和匿名管道。两者都能单方向的跨进程通信。 匿名管道&#xff08;pipe&#xff09;: 必须是父子进程之间&#xff0c;而且子进程只能由父进程fork() 出来的&#xff0c;才能继承父进程的管道句柄&#xff0c;一般mac 开发…

(05)沉积——“更小、更多”,微细化的关键

01、沉积:“加法工艺” 在前几篇文章,我们一直在借用饼干烘焙过程来形象地说明半导体制程。在上一篇我们说到,为制作巧克力夹心,需通过“刻蚀工艺”挖出饼干的中间部分,然后倒入巧克力糖浆,再盖上一层饼干层。“倒入巧克力糖浆”和“盖上饼干层”的过程在半导体制程中就…

玩转爱斯维尔 LaTeX 模板:定制技巧一网打尽!

简介 关于 LaTeX 小编写过一些推文&#xff1a; 适合撰写课程论文的 LaTeX 模板; LaTeX 常用数学符号汇总; 免费升级 overleaf 高级账户&#xff01;; 如何下载使用期刊的 LaTeX 模板 本文基于常用的 Elsevier 期刊模板&#xff0c;小编分享个人常用的使用技巧&#xff0…

【操作系统xv6】学习记录3-Wsl2 Ubuntu18.04图形化界面

不知道为啥&#xff0c;wls2和windows用vscode ssh的方式连接识别&#xff0c; 既然如此&#xff0c;那就装一个桌面版的&#xff0c;其实2年多前装过一次&#xff0c;后来pc机跑深度学习的任务&#xff0c;硬盘坏了~ 开干前再试一次 ref&#xff1a;https://zhuanlan.zhihu.…

字符串加密-第11届蓝桥杯省赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第29讲。 字符串加密&#…

C语言字符类型详解

1. 字符型变量概述 在C语言中&#xff0c;使用 char 关键字来表示字符型变量&#xff0c;它用于存储一个单一字符。 字符型变量的赋值需要使用一对英文半角格式的单引号&#xff08;&#xff09;把字符括起来。 每个字符变量在16位、32位或64位编译器中都是占用1个字节(8位)…