学习笔记(二十二):ArkTS语言-空安全

概述:
默认情况下,ArkTS中的所有类型都是不可为空的,因此类型的值不能为空。

这类似于TypeScript的严格空值检查模式(strictNullChecks),但规则更严格

let x: number = null;    // 编译时错误
let y: string = null;    // 编译时错误
let z: number[] = null;  // 编译时错误

可以为空值的变量定义为联合类型T | null

let x: number | null = null;
x = 1;    // ok
x = null; // ok
if (x != null) { /* do something */ }

 

后缀运算符!可用于断言其操作数为非空。

class A {
  value: number = 0;
}

function foo(a: A | null) {
  a.value;   // 编译时错误:无法访问可空值的属性
  a!.value;  // 编译通过,如果运行时a的值非空,可以访问到a的属性;如果运行时a的值为空,则发生运行时异常
}

 

空值合并运算符

??用于检查左侧表达式的求值是否等于null或者undefined。如果是,则表达式的结果为右侧表达式;否则,结果为左侧表达式。

a ?? b等价于三元运算符(a != null && a != undefined) ? a : b。

price:number|null ; // 货品价格
getPrice(){
  return this.price??99  // 如果price为null或者undefined返回99否则返回price
}

 

posted @ 2024-11-01 17:42  听着music睡  阅读(49)  评论(0编辑  收藏  举报