学习笔记(二十二):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 @   听着music睡  阅读(87)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
历史上的今天:
2021-11-01 JavaScript !!的使用
2021-11-01 JavaScript ES6 扩展运算符(...)的使用
点击右上角即可分享
微信分享提示