HarmonyOS 鸿蒙Next ArkTs语言中的?、??、!、!!代表什么意思

发布于 1周前 作者 phonegap100 来自 鸿蒙OS

HarmonyOS 鸿蒙Next ArkTs语言中的?、??、!、!!代表什么意思 请问有这方面的文档可以参考嘛,找了半天文档也没有找到

比如我定义一个eventY不赋值,在if语句中赋值,再把eventY赋值给event就会报错,在eventY后面加上!!就好了

let eventY: number
if (1 > 0) {  
 eventY = 10
} 
let event: number = eventY!!
11 回复

空值合并运算符 和 非空断言运算符

更多关于HarmonyOS 鸿蒙Next ArkTs语言中的?、??、!、!!代表什么意思的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


空值合并二元运算符??用于检查左侧表达式的求值是否等于null或者undefined。如果是,则表达式的结果为右侧表达式;否则,结果为左侧表达式。

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

测试代码如下,定义的nick变量为null,显示它时,给了一个如果为空或未定义就显示为10。

cke_2985.png

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

应用于空值时,运算符将抛出错误。否则,值的类型将从T | null更改为T

测试代码如下,结果为1,value后无论有多少个叹号,效果都一样!

图片

还是等文档更新吧

图片

后面???

!!加前面代表强制转换成bool类型,但我还没见过加后面的…

我猜测加在后面可能就跳过了强校验,就告诉这个等式,我虽然没有给初始值,但是我保证我是有值的,

没玩明白~ 我再ide是deveco studio中arkts语言跑就可以,

全网搜一下 关键词 ts !!

刚好搜到一篇文章《详解ts中的?、??、!、!!》

https://blog.nowcoder.net/n/6e9ad29a7b1a408eaebaee71dfe5c5d7?from=nowcoder_improve

在HarmonyOS鸿蒙Next的ArkTs语言中,???!!!是用于处理空值和类型转换的运算符。

  1. ?:可选链运算符。用于在访问对象属性或调用方法时,避免因对象为nullundefined而导致的错误。如果对象为nullundefined,表达式会返回undefined,而不会抛出异常。例如:obj?.prop

  2. ??:空值合并运算符。用于在左侧表达式为nullundefined时,返回右侧的默认值。例如:let value = a ?? b,如果anullundefined,则valueb

  3. !:非空断言运算符。用于告诉编译器某个变量或表达式一定不为nullundefined,从而避免类型检查错误。例如:let value = obj!.prop

  4. !!:双重否定运算符。用于将任意值转换为布尔值。第一个!将值转换为布尔值并取反,第二个!再次取反,最终得到原始值的布尔表示。例如:let boolValue = !!someValue

这些运算符在ArkTs中用于简化代码逻辑,提高代码的可读性和安全性。

在HarmonyOS的ArkTS语言中,???!!!是用于处理可选类型和空值的操作符:

  1. ?:用于声明可选类型,表示变量可以为nullundefined
  2. ??:空值合并操作符,如果左侧表达式为nullundefined,则返回右侧的默认值。
  3. !:非空断言操作符,告诉编译器该变量一定不为nullundefined,避免类型检查错误。
  4. !!:将值转换为布尔类型,nullundefined会转为false,其他值转为true

这些操作符有助于更安全地处理空值和类型推断。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!