在实际的开发场景中,大多数时候我们需要初始化数据,但在ArkTS中所有的累心都是不可以为空的,如果要设置为空,需要进行特殊的处理,在使用的时候也需要特殊的处理,以下介绍四种方式
非空段元运算符 a!
let a: number | null = null;
let b = a;//报错,提示a可能为空null
//改进
let b = a! + 1 // 表示当a != null 的时候b = a + 1,如果a 为null 的时候直接跳过工具的检测,则b = 1
//需要注意的事这里的a还是等于null,只是这里a!帮我们避开了工具的规范检测,使代码没有报错
空值合并运算符 a ?? b
let x: number | null = null;
let y = x ?? 20
console.log('y', y) //20
let x: number | null = 12;
let y = x ?? 20
console.log('y', y) //12 表示如果x的值为null的时候,就将20 赋值给y,如果x有值就将x赋值给y
//类似与三元表达式 x != null ? x : 20
可选链操作符 obj.name?.length
class Person{
name?:number[]
}//可选的属性,模拟没有值的情况
let per = new Person() //允许的
console.log(' ', per.name.length)//报错; per.name 可能是undefined的,不能再点length 属性
//调整
console.log(' ', per.name?.length) // 表示,如果per.name有值就继续找他的length舒心,如果没有找到per.name这里就直接返回undefined了
逻辑与赋值 a &&= b
let a: string | null = '123'
let b: string = '你好'
a &&= b // 表示 a 返回的结果为true的时候就将b赋值给a,如果a返回的结果为false的时候,就将a赋值给a
console.log('', a) //你好