首页 > 其他分享 >学习笔记(二十二):ArkTS语言-空安全

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

时间:2024-11-01 17:31:11浏览次数:1  
标签:二十二 ArkTS price number 笔记 空值 编译 let null

概述:
默认情况下,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

相关文章

  • 学习笔记(二十):ArkTS语言-函数
    一、函数声明包含其名称、参数列表、返回类型和函数体functiongetName(defaultName:string):string{returndefaultName==='Alice'?defaultName:"Tom"} 二、可选参数格式可为name?:TypefunctiongetName(defaultName?:string):string{returndefaultName==null......
  • [编程笔记] 搞人心态的代码含毒事件 “svn无法成功完成操作因为文件包含病毒或潜在的
    今天突然冒出来的问题,烦死了! svn拉取代码报毒了,不用想,基本就是下面几个可能性:1、某人提交的代码有毒2、电脑上的第三方杀毒软件引发3、WindowsDefender误判报毒的代码是一个dll文件,鬼知道写的什么,没有去深究,杀毒软件最近......
  • 【机器人学导论】简明学习笔记2.1——空间描述和变换(1/2)
    主要参考学习资料:《机器人学导论(第4版)》JohnJ.Craig著台大机器人学之运动学——林沛群(本文插图来自该课程课件)本章前置知识:矢量和矩阵的四则运算-单位矩阵-转置矩阵-逆矩阵-正交矩阵码字不易,求点赞收藏(´•ω•̥`)有问题欢迎评论区讨论~目录空间描述和变换描......
  • 学习笔记(十九):ArkTS语言基本知识
    一、声明变量letname:string="";name="Alice"如果一个变量或常量的声明包含了初始值,那么开发者就不需要显式指定其类型。ArkTS规范中列举了所有允许自动推断类型的场景。letname="Alice";二、声明常量constname:string="Alice";三、Union类型类型联合类......
  • Nothing Phone(2)的灯带驱动研究笔记
    最近整了部NothingPhone(2),bl秒解的设定是真的舒服,所以买来第一时间就透了一遍(指root了)。然后半夜睡不着,就打算研究一下这个灯带是怎么调用的。然后就开始了,一段孤独的旅程充满烦恼~内核源码:很不幸,除了知道了灯带型号是aw20036之外没啥收获,原因无他,单纯看不懂代码,注释都不怎......
  • RocketMQ学习笔记(已完结)
    RocketMQ简介RocketMQ是阿里巴巴2016年MQ中间件,使用Java语言开发,RocketMQ是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。同时,广泛应用于多个领域,包括异步通信解耦、企业解决方案、金融支付、电信、电子商务、快递物流、广告营......
  • 【Mysql自学笔记(黑马程序员)】基础篇(三)SQL常用语法分类——DQL(数据查询语言)(篇一)基本查
    SQL常用语法分类——DQL(数据查询语言)(篇一)——基本查询、条件查询、聚合函数一、概述1、什么是DQL?2、本文内容二、DQL语句介绍0、前言1、基本查询2、条件查询3、聚合函数本专栏将会持续更新,旨在为大家源源不断地呈现更多有帮助的Mysql学习内容。以下是之前更新的两......
  • MyBatis与Mybatis-plus的学习总结 及 两者的区别 我的学习笔记
    MyBatis与Mybatis-plus的学习总结及两者的区别超详细样例很多我的学习笔记一、MyBatis1.MyBatis简介2.MybatisX插件3.Mapper代理开发4.配置文件完成CRUD5.注解完成CRUD6.动态SQL二、MyBatis-plus1.MyBatis-plus快速入门2.条件构造器WrapperAbstractWrapperQueryWra......
  • 无约束最优化方法基本结构-数值最优化方法-课程学习笔记-2
    无约束最优化方法的基本结构现在我们正式进入第二章的学习,在开始学习无约束最优化方法之前我们先学习几个知识.在以后的章节,如果没有特殊说明,我们总假定目标函数f(......
  • 《咨询的奥秘》-寻求和提出建议的智慧 笔记
    文章目录前言定律、法则和原理列表以上前言本文内容主要引自《咨询的奥秘》-寻求和提出建议的智慧,主要内容是定律、法则和原理。定律、法则和原理列表咨询第一定律不管客户和你说什么,问题总会有。咨询第二定律,第5页不管一开始看起来什么样,它永远是人的问题。......