HarmonyOS 鸿蒙Next ArkTs语言中的?、??、!、!!代表什么意思
HarmonyOS 鸿蒙Next ArkTs语言中的?、??、!、!!代表什么意思 请问有这方面的文档可以参考嘛,找了半天文档也没有找到
比如我定义一个eventY
不赋值,在if语句
中赋值,再把eventY
赋值给event
就会报错,在eventY
后面加上!!
就好了
let eventY: number
if (1 > 0) {
eventY = 10
}
let event: number = eventY!!
空值合并运算符 和 非空断言运算符
更多关于HarmonyOS 鸿蒙Next ArkTs语言中的?、??、!、!!代表什么意思的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
空值合并二元运算符??用于检查左侧表达式的求值是否等于null或者undefined。如果是,则表达式的结果为右侧表达式;否则,结果为左侧表达式。
换句话说,a ?? b等价于三元运算符(a != null && a != undefined) ? a : b。
测试代码如下,定义的nick变量为null,显示它时,给了一个如果为空或未定义就显示为10。
还是等文档更新吧
后面???
!!加前面代表强制转换成bool类型,但我还没见过加后面的…
我猜测加在后面可能就跳过了强校验,就告诉这个等式,我虽然没有给初始值,但是我保证我是有值的,
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Logical_NOTh +/-$%-+你这段我在node环境下跑直接报错…
全网搜一下 关键词 ts !!
刚好搜到一篇文章《详解ts中的?、??、!、!!》
https://blog.nowcoder.net/n/6e9ad29a7b1a408eaebaee71dfe5c5d7?from=nowcoder_improve
在HarmonyOS鸿蒙Next的ArkTs语言中,?
、??
、!
、!!
是用于处理空值和类型转换的运算符。
-
?
:可选链运算符。用于在访问对象属性或调用方法时,避免因对象为null
或undefined
而导致的错误。如果对象为null
或undefined
,表达式会返回undefined
,而不会抛出异常。例如:obj?.prop
。 -
??
:空值合并运算符。用于在左侧表达式为null
或undefined
时,返回右侧的默认值。例如:let value = a ?? b
,如果a
为null
或undefined
,则value
为b
。 -
!
:非空断言运算符。用于告诉编译器某个变量或表达式一定不为null
或undefined
,从而避免类型检查错误。例如:let value = obj!.prop
。 -
!!
:双重否定运算符。用于将任意值转换为布尔值。第一个!
将值转换为布尔值并取反,第二个!
再次取反,最终得到原始值的布尔表示。例如:let boolValue = !!someValue
。
这些运算符在ArkTs中用于简化代码逻辑,提高代码的可读性和安全性。
在HarmonyOS的ArkTS语言中,?
、??
、!
、!!
是用于处理可选类型和空值的操作符:
?
:用于声明可选类型,表示变量可以为null
或undefined
。??
:空值合并操作符,如果左侧表达式为null
或undefined
,则返回右侧的默认值。!
:非空断言操作符,告诉编译器该变量一定不为null
或undefined
,避免类型检查错误。!!
:将值转换为布尔类型,null
或undefined
会转为false
,其他值转为true
。
这些操作符有助于更安全地处理空值和类型推断。