OpenHarmony开发者论坛

标题: 【北向开发】【ArkTS语法求助】API10版本中,如何封装单例模式工具类? [打印本页]

作者: 程天骄    时间: 2024-2-4 00:10
标题: 【北向开发】【ArkTS语法求助】API10版本中,如何封装单例模式工具类?
[md]起因是项目中有很多地方需要使用KVStore,但是获取KVStore实例需要较为繁琐的步骤,所以想简化这个流程。

基于以上需求,我构建了一个单例工具类,在EntryAbility构造的时候,初始化工具类中的KVStore实例,然后在需要的时候获取KVStore实例,存取数据。代码如下图所示:

![微信图片_20240203235733.png](https://forums-obs.openharmony.c ... r216po7rzce6tfd.png "微信图片_20240203235733.png")

编译时IDE给出报错:“ Type 'undefined' is not assignable to type 'SingleKVStore'.”

如果将左侧21行代码中的" = undefined"删掉,则编译时报错如下图

```
// private generalStore: distributedKVStore.SingleKVStore = undefined;
private generalStore: distributedKVStore.SingleKVStore;
```

![微信图片_20240204000141.png](https://forums-obs.openharmony.c ... mqyqtmquqzptnyt.png "微信图片_20240204000141.png")

请教论坛里的各位大佬,是我的语法有问题,还是我的实现思路错了?应该如何满足我的需求呢?
[/md]
作者: hyacinth养花人    时间: 2024-2-4 11:53
试下
let kvStore: distributedKVStore.SingleKVStore | undefined;
或者
let kvStore: distributedKVStore.SingleKVStore | undefined = undefined;
作者: 程天骄    时间: 2024-2-4 13:12
回复 hyacinth养花人: 感谢回答,按您说的试过了,还是无法编译通过,截图如下。
作者: 程天骄    时间: 2024-2-4 14:13
此贴终结,感谢hyacinth养花人大佬的解答。下面贴图附上两种抽离公共方法实现工具类的方式,仅供参考。如果有其他更优雅的方式,欢迎回复讨论。

方案A:通过引用公共代码块的形式实现
(, 下载次数: 16)

方案B:通过声明单例类的形式实现(存在两个注意点,已在图中使用红字+箭头标注)
(, 下载次数: 16)





欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5