【typescript】特殊符号用法(?:)(??)(?.)(!)(!!)

一. 问号+冒号(?:)

1.可以作为对象类型的可选属性,如:

interface Person{
    name : string;
    age?: number;
}

const person1 : Person = {name:"zien"}
const person2 : Person = {name:"sad", age:18}
console.log("person1 = ", person1.name, person1.age)
console.log("person2 = ", person2.name, person2.age)

2.可以作为函数参数列表中的可选参数,如:

function persionFun(name : string, age ?: number){
    console.log("persionFun = ", name, age)
}

persionFun("clz", 13)
persionFun("sad")

上面两个例子的输出结果如下:

二.两个问号(??)

        判断变量是否为空,如果变量为空,用后面的默认值初始化对象。

const v1 = null
const v2 = 2

const v3 = v1 ?? 3
const v4 = v2 ?? 4

console.log("v3 = ", v3)
console.log("v4 = ", v4)

因为V1为空,所以用了默认值3来初始化对象V3
因为V2不为空,所以用V2的值2来初始化V4

3.问号+点(?.)

        对象不为空才调用对象的属性。如果对象为空则返回undefined。

function persion(data: any){
    console.log("persion = ", data?.name?.age)

    // 其实类似这种写法,判断了data和data.name有值才继续执行下去
    // if(data && data.name){
    //     console.log("persion = ", data?.name?.age)
    // }
}

输出结果undefined~ 如果把问号去掉,就会因为报错而导致程序终止执行了。

4.问好+冒号,分开(a?b:c)

其实就是普通的三目运算符。

const v1 = 1
const v2 = 2

const value = v1 > v2 ? "greater" : "less"

console.log("value = ", value)

5.感叹号(!)

        这个就是简单的对值取反,不详细说了……

6.两个感叹号(!!)

        把对象类型强行转换为布尔型。

const v1 = 0
const v2 = 1
console.log("v1 = ", !!v1)
console.log("v2 = ", !!v2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值