typescript中的BigInt,展开运算符,解构和可选链运算

2024-05-06 16:36

本文主要是介绍typescript中的BigInt,展开运算符,解构和可选链运算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

BigInt,展开运算符,解构和可选链运算

BigInt

javascript中支持两种数据类型, Number类型和BigInt类型。
JavaScript的七种原始数据类型,Undefined,Null,Boolean,String,Symbol,Number,BigInt
JavaScript使用双精度64位浮点数格式来表示Number类型的值,Number类型能够安全的表示最大的整数,该数值能够使用内置的number对象上的MAX_SAFE_INTEGER属性来表示,bigint类型能够表示任意精度的整数。

创建BigInt

  1. 使用BigInt字面量
const unit = 1n;
  1. 使用BigInt()函数
const unit = BigInt(1)

BigInt和Number

  1. 比较
    进行严格相等比较时,BigInt类型的值与Number类型的值永远不相等。进行非严格相等比较及大小关系比较时,BigInt类型的值与Number类型的值将进行数学意义上的比较
  2. 混合运算
// 类型错误,无法使用bigInt和其他类型
1 + 1n;

通过内置的Number()函数能够将BigInt类型的值强转为Number类型。但是会损失精度

Number(1n) // 1

展开运算符

可以使用在多种上下文中,比如对象字面量,数组字面量和函数调用语句中。...expression

展开数组字面量

数组字面量中的展开运算
符可以应用在任何可迭代对象,作用是将迭代产生的每个值插入数组字面量的指定位置

const firstHalfYearSeasons = ['Spring', 'Summer']
const seasons = [...firstHalfYearSeasons, 'fall','winter']
seasons // ["spring","summer","fall","winter"]

展开对象字面量

对象字面量中使用展开运算符,对象字面量中的展开运算符会将操作数的自身枚举属性复制到当前的对象字面量中

const point2d = {x: 0,y:0
}
const point3d = {...point2d,z: 0,
}
point3d // {x: 0, y: 0, z: 0}

对象字面量可以仅由一个展开属性定义构成,这相当于对对象进行了复制操作。

展开函数参数

在调用一个函数时可以实际参数列表中使用展开运算符展开一个可迭代对象。它的作用是将迭代产生的每个值当成独立的实际参数传递给函数

const nums = [3, 1, 4];
const max = Math.max(...nums)
max; // 4

解构

构是指将数组或对象在结构上进行分解,将其拆分成为独立的子结构

数组解构

const point = [0, 1]
const [x, y] = point

对象结构

const point = {x: 0, y: 1}
const {x, y} = point

可选链运算符

当尝试访问对象属性时,如果对象的值为undefined或null,那么属性访问将产生错误。为了提高程序的健壮性,在访问对象属性时通常需要检查对象是否已经初始化,只有当对象不为undefined和null时才去访问对象的属性。

基础语法

可选的静态属性访问
obj?.prop
可选的计算属性访问
obj?.[expr]
可选的函数调用或者方法调用
fn?.()

短路求值

如果可选链运算符左侧操作数的求值结果为undefined或null,那么右侧的操作数不会再被求值,我们将这种行为称作短路求值

let x = 0
let a = undefined
a?.[++x]
x

空值合并运算符

当且仅当“??”运算符左侧操作数a的值为undefined或null时,返回右侧操作数b;否则,返回左侧操作数a。

a??b

这篇关于typescript中的BigInt,展开运算符,解构和可选链运算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/964833

相关文章

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

uva 575 Skew Binary(位运算)

求第一个以(2^(k+1)-1)为进制的数。 数据不大,可以直接搞。 代码: #include <stdio.h>#include <string.h>const int maxn = 100 + 5;int main(){char num[maxn];while (scanf("%s", num) == 1){if (num[0] == '0')break;int len =

【重学 MySQL】十九、位运算符的使用

【重学 MySQL】十九、位运算符的使用 示例检查权限添加权限移除权限 在 MySQL 中,位运算符允许你直接在整数类型的列或表达式上进行位级操作。这些操作对于处理那些需要在二进制表示上进行直接修改或比较的场景特别有用,比如权限管理、状态标记等。 &(位与) 对两个数的二进制表示进行位与操作。只有两个相应的二进制位都为 1 时,结果的该位才为 1,否则为 0。 |(位

C语言程序设计(数据类型、运算符与表达式)

一、C的数据类型 C语言提供的数据类型: 二、常量和变量 2.1常量和符号常量 在程序运行过程中,其值不能被改变的量称为常量。 常量区分为不同的类型: 程序中用#define(预处理器指令)命令行定义变量将代表常量,用一个标识符代表一个常量,称为符合常量。 2.2变量 变量代表内存中具有特定属性的一个存储单元,用来存放数据,在程序运行期间,这些值是可以 改变的。 变

第二十四章 rust中的运算符重载

注意 本系列文章已升级、转移至我的自建站点中,本章原文为:rust中的运算符重载 目录 注意一、前言二、基本使用三、常用运算符四、通用约束 一、前言 C/C++中有运算符重载这一概念,它的目的是让即使含不相干的内容也能通过我们自定义的方法进行运算符操作运算。 比如字符串本身是不能相加的,但由于C++中的String重载了运算符+,所以我们就可以将两个字符串进行相加、但实际

【Java中的位运算和逻辑运算详解及其区别】

Java中的位运算和逻辑运算详解及其区别 在 Java 编程中,位运算和逻辑运算是常见的两种操作类型。位运算用于操作整数的二进制位,而逻辑运算则是处理布尔值 (boolean) 的运算。本文将详细讲解这两种运算及其主要区别,并给出相应示例。 应用场景了解 位运算和逻辑运算的设计初衷源自计算机底层硬件和逻辑运算的需求,它们分别针对不同的处理对象和场景。以下是它们设计的初始目的简介:

位运算:带带孩子吧,孩子很强的!

快速进制 在聊到位运算之前,不妨先简单过一遍二进制的东西。熟悉二进制和十进制的快速转换确实是掌握位运算的基础,因为位运算直接在二进制位上进行操作。如果不熟悉二进制表示,很难直观理解位运算的效果。 这里主要涉及二进制和十进制之间的互相转换。 十进制转二进制 十进制转二进制可以使用常见的 除2取余法 进行。每次将十进制除以2并记录所得余数,直到商为0,然后再将记录的余数 从下往上排列即

《C++中的移动构造函数与移动赋值运算符:解锁高效编程的最佳实践》

在 C++的编程世界中,移动构造函数和移动赋值运算符是提升程序性能和效率的重要工具。理解并正确运用它们,可以让我们的代码更加高效、简洁和优雅。 一、引言 随着现代软件系统的日益复杂和对性能要求的不断提高,C++程序员需要不断探索新的技术和方法来优化代码。移动构造函数和移动赋值运算符的出现,为解决资源管理和性能优化问题提供了有力的手段。它们允许我们在不进行不必要的复制操作的情况下,高效地转移资源

Java基础--基本运算符介绍

Java运算符 用于指明对于操作数的运算方式。 分类: 按照操作数的数目来进行分类: 单目a++ 双目a+b 三目(a>b)?x:y; 按照运算符的功能来进行分类: 算术运算:+ - * / %(取余)++ – 如: int x=1; x=x+1;//x空间内的值,自己增加了一个 x++;//x空间内的值,自增一个 ++x;//对于x空间内的值来讲都是一致,最终的结果都自

快速幂运算的一些模板

这里用递归和循环两种做法来做。 简单来说,快速幂就是把底数扩大,指数缩小,比如2*2=4;计算2的幂时,就可以转换成4的幂来运算,这样可以避免在计算大的数据时爆int的现象  //递归int power(int a,int n){int ans;if(n==2) ans=1;else{ans=power(a*a,n/2);if(n%2==1) ans*=a;}return ans;}