概述:
默认情况下,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 }
标签:二十二,ArkTS,price,number,笔记,空值,编译,let,null From: https://www.cnblogs.com/xqxacm/p/18520936