本文主要是介绍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
- 使用BigInt字面量
const unit = 1n;
- 使用BigInt()函数
const unit = BigInt(1)
BigInt和Number
- 比较
进行严格相等比较时,BigInt类型的值与Number类型的值永远不相等。进行非严格相等比较及大小关系比较时,BigInt类型的值与Number类型的值将进行数学意义上的比较 - 混合运算
// 类型错误,无法使用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,展开运算符,解构和可选链运算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!