HarmonyOS 鸿蒙Next AppStorageV2有人用么?

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

HarmonyOS 鸿蒙Next AppStorageV2有人用么?

@Local prop: Sample = AppStorageV2.connect(Sample, () => new Sample())!;

这个语句后面加个感叹号是什么意思?

7 回复

!是TS语法中的非空断言符,以下是常见的几种符号的解释供楼主参考:

1. ! 感叹号 是非null和非undefined的类型断言,在变量名后面添加一个!就会忽略undefined和null。

const inputRef = useRef<HTMLEInputlement>(null);
// 定义了输入框,初始化是 null,但是你在调用他的时候相取输入框的 value,这时候 dom 实例一定是有值的,所以用断言
const value: string = inputRef.current!.value;
// 这样就不会报错了

2. ? 问号 用在属性或参数中,表示该属性或参数为可选项。

function fun(x: number, y?: number) { // 可选参数
    return x + (y || 0);
}
fun(1); // 1
fun(1, null); // error, 'null' is not assignable to 'number | undefined'

interface IPro {   id: string | number;   page: number;   key?: string; // 可选属性 }

3. ?? 双问号 和 || 的意思相似,但是又有区别,?? 相较 || 比较严谨, 当值等于0 的时候 || 就把他给排除了,但是 ?? 不会

console.log(null || 3)   // 3
console.log(null ?? 2)     // 2
console.log(undefined || 2)      // 2
console.log(undefined ?? 2)      // 2
console.log(0 || 2)       // 2
console.log(0 ?? 2)      // 2

4. ?. 问号点 的意思基本和 && 是一样的,a ?. b 相当于 a && a.b ? a.b : undefined

const a = {
   b: { c: 7 }
};
console.log(a?.b?.c);     //7
console.log(a && a.b && a.b.c);    //7

举例:有一个数据 data, 它的属性值可能为 null,undefined,通常我们的写法是直接上 if 判断啥的,然后再取 data 中的属性,但是有了问号点 ?. 写法就简单很多了

更多关于HarmonyOS 鸿蒙Next AppStorageV2有人用么?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


!!一般用来将后面的表达式强制转换为布尔类型的数据(boolean),也就是只能是true或者false,比如: const a = undefined; const flag = !!a // false

!! 放变量后面呢?

末尾的感叹号(! )是 “非空断言操作符”(Non-null assertion operator)。

它用于告诉编译器,你确信表达式的值不会为 null 或者 undefined,让编译器跳过对该值可能为空的类型检查。可以放心地按照非空的情况去使用它后续关联的 Sample 相关逻辑。

语言空安全的一种标识。

connect这个方法返回类型是 T |undefined,但是你只用了一个Sample来接收。通过!告诉编译器,这里返回值一定不为undefined这种情况。编译器就不做这个情况的类型的检查了

以下是其余的写法。

深色代码主题
复制
[@Local](/user/Local) prop: String | undefined = AppStorageV2.connect(String, () => '');
深色代码主题
复制
[@Local](/user/Local) prop: String = AppStorageV2.connect(String, () => '') as String;

HarmonyOS 鸿蒙Next AppStorageV2已有部分开发者在使用。AppStorageV2是鸿蒙系统提供的一种应用数据存储机制,旨在优化应用数据的存储效率和安全性。相较于之前的版本,AppStorageV2在数据读写速度、存储容量以及数据保护方面都有所提升。

它支持多种数据类型,包括基础数据类型、复杂对象以及自定义类型,为开发者提供了灵活的数据存储方式。同时,AppStorageV2还提供了数据版本控制和回滚机制,以确保应用数据的稳定性和一致性。

开发者在使用AppStorageV2时,可以通过鸿蒙系统提供的API接口进行数据操作,包括数据的写入、读取、更新和删除等。这些API接口设计简洁,易于使用,能够大大降低开发者的学习成本。

需要注意的是,AppStorageV2的使用需要遵循鸿蒙系统的开发规范和数据安全要求,以确保应用数据的合法性和安全性。开发者在使用前应仔细阅读相关文档,了解API接口的使用方法和注意事项。

如果开发者在使用过程中遇到具体问题,如数据读写异常、数据丢失等,可以通过查阅鸿蒙系统的官方文档或社区论坛获取帮助。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部