ArkTS中处理数据为空(null)的四种解决方案 ! ! !

134 阅读1分钟

在实际的开发场景中,大多数时候我们需要初始化数据,但在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) //你好