1# 应用级变量的状态管理 2 3 4状态管理模块提供了应用程序的数据存储能力、持久化数据管理能力、UIAbility数据存储能力和应用程序需要的环境状态。 5 6 7>**说明:** 8> 9>本模块首批接口从API version 7开始支持,后续版本的新增接口,采用上角标单独标记接口的起始版本。 10 11 12本文中T和S的含义如下: 13 14 15| 类型 | 说明 | 16| ---- | -------------------------------------- | 17| T | Class,number,boolean,string和这些类型的数组形式。 | 18| S | number,boolean,string。 | 19 20 21## AppStorage 22 23AppStorage具体UI使用说明,详见[AppStorage(应用全局的UI状态存储)](../../../ui/state-management/arkts-appstorage.md) 24 25**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 26 27**系统能力:** SystemCapability.ArkUI.ArkUI.Full 28 29### ref<sup>12+</sup> 30 31static ref\<T\>(propName: string): AbstractProperty\<T\> | undefined 32 33如果给定的propName在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中存在,则获得AppStorage中propName对应数据的引用。否则,返回undefined。 34 35与[link](#link10)的功能基本一致,但不需要手动释放返回的[AbstractProperty](#abstractproperty)类型的变量。 36 37**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 38 39**系统能力:** SystemCapability.ArkUI.ArkUI.Full 40 41**参数:** 42 43| 参数名 | 类型 | 必填 | 说明 | 44| -------- | ------ | ---- | ---------------------- | 45| propName | string | 是 | AppStorage中的属性名。 | 46 47**返回值:** 48 49| 类型 | 说明 | 50| -------------------------------------- | ------------------------------------------------------------ | 51| [AbstractProperty<T>](#abstractproperty) \| undefined | AppStorage中propName对应属性的引用,如果AppStorage中不存在对应的propName,则返回undefined。 | 52 53**示例:** 54 55```ts 56AppStorage.setOrCreate('PropA', 47); 57let refToPropA1: AbstractProperty<number> | undefined = AppStorage.ref('PropA'); 58let refToPropA2: AbstractProperty<number> | undefined = AppStorage.ref('PropA'); // refToPropA2.get() == 47 59refToPropA1?.set(48); // 同步修改AppStorage: refToPropA1.get() == refToPropA2.get() == 48 60``` 61 62### setAndRef<sup>12+</sup> 63 64static setAndRef<T>(propName: string, defaultValue: T): AbstractProperty<T> 65 66与[ref](#ref12)接口类似,如果给定的propName在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中存在,则获得AppStorage中propName对应数据的引用。如果不存在,则使用defaultValue在AppStorage中创建和初始化propName对应的属性,并返回其引用。defaultValue须为T类型,可以为null或undefined。 67 68与[setAndLink](#setandlink10)的功能基本一致,但不需要手动释放返回的[AbstractProperty](#abstractproperty)类型的变量。 69 70> **说明:**<br/> 71> 从API version 12开始,AppStorage支持[Map](../../../ui/state-management/arkts-appstorage.md#装饰map类型变量)、[Set](../../../ui/state-management/arkts-appstorage.md#装饰set类型变量)、[Date类型](../../../ui/state-management/arkts-appstorage.md#装饰date类型变量),支持null、undefined以及[联合类型](../../../ui/state-management/arkts-appstorage.md#appstorage支持联合类型)。 72 73**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 74 75**系统能力:** SystemCapability.ArkUI.ArkUI.Full 76 77**参数:** 78 79| 参数名 | 类型 | 必填 | 说明 | 80| ------------ | ------ | ---- | ------------------------------------------------------------ | 81| propName | string | 是 | AppStorage中的属性名。 | 82| defaultValue | T | 是 | 当propName在AppStorage中不存在时,使用defaultValue在AppStorage中初始化对应的propName,defaultValue可以为null或undefined。 | 83 84**返回值:** 85 86| 类型 | 说明 | 87| ------------------------- | ------------------------------------------------------------ | 88| [AbstractProperty<T>](#abstractproperty) | AbstractProperty<T>的实例,为AppStorage中propName对应属性的引用。 | 89 90**示例:** 91 92```ts 93AppStorage.setOrCreate('PropA', 47); 94let ref1: AbstractProperty<number> = AppStorage.setAndRef('PropB', 49); // 用默认值49创建PropB 95let ref2: AbstractProperty<number> = AppStorage.setAndRef('PropA', 50); // PropA已存在,值为47 96``` 97 98 99### link<sup>10+</sup> 100 101static link<T>(propName: string): SubscribedAbstractProperty<T> 102 103与[AppStorage](../../../ui/state-management/arkts-appstorage.md)中对应的propName建立双向数据绑定。如果给定的propName在AppStorage中存在,返回AppStorage中propName对应属性的双向绑定数据。 104 105双向绑定数据的修改会同步回AppStorage中,AppStorage会将变化同步到所有绑定该propName的数据和自定义组件中。 106 107如果AppStorage中不存在propName,则返回undefined。 108 109**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 110 111**系统能力:** SystemCapability.ArkUI.ArkUI.Full 112 113**参数:** 114 115| 参数名 | 类型 | 必填 | 说明 | 116| -------- | ------ | ---- | ---------------- | 117| propName | string | 是 | AppStorage中的属性名。 | 118 119**返回值:** 120 121| 类型 | 说明 | 122| ----------------------------------- | ------------------------------------------------------------ | 123| [SubscribedAbstractProperty<T>](#subscribedabstractproperty) | 返回双向绑定的数据,如果AppStorage中不存在对应的propName,则返回undefined。 | 124 125**示例:** 126```ts 127AppStorage.setOrCreate('PropA', 47); 128let linkToPropA1: SubscribedAbstractProperty<number> = AppStorage.link('PropA'); 129let linkToPropA2: SubscribedAbstractProperty<number> = AppStorage.link('PropA'); // linkToPropA2.get() == 47 130linkToPropA1.set(48); // 双向同步: linkToPropA1.get() == linkToPropA2.get() == 48 131``` 132 133 134### setAndLink<sup>10+</sup> 135 136static setAndLink<T>(propName: string, defaultValue: T): SubscribedAbstractProperty<T> 137 138与[link](#link10)接口类似,如果给定的propName在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中存在,则返回该propName对应的属性的双向绑定数据。如果不存在,则使用defaultValue在AppStorage中创建和初始化propName对应的属性,返回其双向绑定数据。defaultValue必须为T类型,从API version 12开始defaultValue可以为null或undefined。 139 140> **说明:**<br/> 141> 从API version 12开始,AppStorage支持[Map](../../../ui/state-management/arkts-appstorage.md#装饰map类型变量)、[Set](../../../ui/state-management/arkts-appstorage.md#装饰set类型变量)、[Date类型](../../../ui/state-management/arkts-appstorage.md#装饰date类型变量),支持null、undefined以及[联合类型](../../../ui/state-management/arkts-appstorage.md#appstorage支持联合类型)。 142 143**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 144 145**系统能力:** SystemCapability.ArkUI.ArkUI.Full 146 147**参数:** 148 149| 参数名 | 类型 | 必填 | 说明 | 150| ------------ | ------ | ---- | ------------------------------------------------------------ | 151| propName | string | 是 | AppStorage中的属性名。 | 152| defaultValue | T | 是 | 当propName在AppStorage中不存在时,使用defaultValue在AppStorage中初始化对应的propName,从API version 12开始,defaultValue可以为null或undefined。 | 153 154**返回值:** 155 156| 类型 | 说明 | 157| ----------------------------------- | ---------------------------------------- | 158| [SubscribedAbstractProperty<T>](#subscribedabstractproperty) | SubscribedAbstractProperty<T>的实例,和AppStorage中propName对应属性的双向绑定的数据。 | 159 160**示例:** 161```ts 162AppStorage.setOrCreate('PropA', 47); 163let link1: SubscribedAbstractProperty<number> = AppStorage.setAndLink('PropB', 49); // 用默认值49创建PropB 164let link2: SubscribedAbstractProperty<number> = AppStorage.setAndLink('PropA', 50); // PropA已存在,值为47 165``` 166 167 168### prop<sup>10+</sup> 169 170static prop<T>(propName: string): SubscribedAbstractProperty<T> 171 172与[AppStorage](../../../ui/state-management/arkts-appstorage.md)中对应的propName建立单向属性绑定。如果给定的propName在AppStorage中存在,则返回与AppStorage中propName对应属性的单向绑定数据。如果AppStorage中不存在propName,则返回undefined。单向绑定数据的修改不会被同步回AppStorage中。 173 174**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 175 176**系统能力:** SystemCapability.ArkUI.ArkUI.Full 177 178**参数:** 179 180| 参数名 | 类型 | 必填 | 说明 | 181| -------- | ------ | ---- | ---------------- | 182| propName | string | 是 | AppStorage中的属性名。 | 183 184**返回值:** 185 186| 类型 | 说明 | 187| ----------------------------------- | ------------------------------------------------------------ | 188| [SubscribedAbstractProperty<T>](#subscribedabstractproperty) | 返回单向绑定的数据,如果AppStorage中不存在对应的propName,则返回undefined。 | 189 190**示例:** 191 192```ts 193AppStorage.setOrCreate('PropA', 47); 194let prop1: SubscribedAbstractProperty<number> = AppStorage.prop('PropA'); 195let prop2: SubscribedAbstractProperty<number> = AppStorage.prop('PropA'); 196prop1.set(1); // 单向同步:prop1.get()的值为1,prop2.get()的值为47 197``` 198 199 200### setAndProp<sup>10+</sup> 201 202static setAndProp<T>(propName: string, defaultValue: T): SubscribedAbstractProperty<T> 203 204与[prop](#prop10)接口类似。如果给定的propName在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中存在,则返回该propName对应的属性的单向绑定数据。如果不存在,则使用defaultValue在AppStorage中创建和初始化propName对应的属性,返回其单向绑定数据。defaultValue必须为T类型,从API version 12开始defaultValue可以为null或undefined。 205 206> **说明:**<br/> 207> 从API version 12开始,AppStorage支持[Map](../../../ui/state-management/arkts-appstorage.md#装饰map类型变量)、[Set](../../../ui/state-management/arkts-appstorage.md#装饰set类型变量)、[Date类型](../../../ui/state-management/arkts-appstorage.md#装饰date类型变量),支持null、undefined以及[联合类型](../../../ui/state-management/arkts-appstorage.md#appstorage支持联合类型)。 208 209**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 210 211**系统能力:** SystemCapability.ArkUI.ArkUI.Full 212 213**参数:** 214 215| 参数名 | 类型 | 必填 | 说明 | 216| ------------ | ------ | ---- | ------------------------------------------------------------ | 217| propName | string | 是 | AppStorage中的属性名。 | 218| defaultValue | T | 是 | 当propName在AppStorage中不存在时,使用defaultValue在AppStorage中初始化对应的propName,从API version 12开始,defaultValue可以为null或undefined。 | 219 220**返回值:** 221 222| 类型 | 说明 | 223| ----------------------------------- | --------------------------------------- | 224| [SubscribedAbstractProperty<T>](#subscribedabstractproperty) | SubscribedAbstractProperty<T>的实例。 | 225 226**示例:** 227```ts 228AppStorage.setOrCreate('PropA', 47); 229let prop: SubscribedAbstractProperty<number> = AppStorage.setAndProp('PropB', 49); // PropA -> 47, PropB -> 49 230``` 231 232 233### has<sup>10+</sup> 234 235static has(propName: string): boolean 236 237判断propName对应的属性是否在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中存在。 238 239**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 240 241**系统能力:** SystemCapability.ArkUI.ArkUI.Full 242 243**参数:** 244 245| 参数名 | 类型 | 必填 | 说明 | 246| -------- | ------ | ---- | ---------------- | 247| propName | string | 是 | AppStorage中的属性名。 | 248 249**返回值:** 250 251| 类型 | 说明 | 252| ------- | ---------------------------------------- | 253| boolean | 如果propName对应的属性在AppStorage中存在,则返回true。不存在则返回false。 | 254 255**示例:** 256```ts 257AppStorage.has('simpleProp'); 258``` 259 260 261### get<sup>10+</sup> 262 263static get<T>(propName: string): T | undefined 264 265获取propName在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中对应的属性值。如果不存在则返回undefined。 266 267**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 268 269**系统能力:** SystemCapability.ArkUI.ArkUI.Full 270 271**参数:** 272 273| 参数名 | 类型 | 必填 | 说明 | 274| -------- | ------ | ---- | ---------------- | 275| propName | string | 是 | AppStorage中的属性名。 | 276 277**返回值:** 278 279| 类型 | 说明 | 280| ------------------------ | ----------------------------------------------------------- | 281| T \| undefined | AppStorage中propName对应的属性,如果不存在则返回undefined。 | 282 283**示例:** 284```ts 285AppStorage.setOrCreate('PropA', 47); 286let value: number = AppStorage.get('PropA') as number; // 47 287``` 288 289 290### set<sup>10+</sup> 291 292static set<T>(propName: string, newValue: T): boolean 293 294在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中设置propName对应属性的值。如果newValue的值和propName对应属性的值相同,即不需要做赋值操作,状态变量不会通知UI刷新propName对应属性的值,从API version 12开始,newValue可以为null或undefined。 295 296> **说明:**<br/> 297> 从API version 12开始,AppStorage支持[Map](../../../ui/state-management/arkts-appstorage.md#装饰map类型变量)、[Set](../../../ui/state-management/arkts-appstorage.md#装饰set类型变量)、[Date类型](../../../ui/state-management/arkts-appstorage.md#装饰date类型变量),支持null、undefined以及[联合类型](../../../ui/state-management/arkts-appstorage.md#appstorage支持联合类型)。 298 299**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 300 301**系统能力:** SystemCapability.ArkUI.ArkUI.Full 302 303**参数:** 304 305| 参数名 | 类型 | 必填 | 说明 | 306| -------- | ------ | ---- | ---------------------- | 307| propName | string | 是 | AppStorage中的属性名。 | 308| newValue | T | 是 | 属性值,从API version 12开始可以为null或undefined。 | 309 310**返回值:** 311 312| 类型 | 说明 | 313| ------- | ------------------------------------------------------------ | 314| boolean | 如果AppStorage中不存在propName对应的属性,或设值失败,则返回false。设置成功则返回true。 | 315 316**示例:** 317```ts 318AppStorage.setOrCreate('PropA', 48); 319let res: boolean = AppStorage.set('PropA', 47) // true 320let res1: boolean = AppStorage.set('PropB', 47) // false 321``` 322 323 324### setOrCreate<sup>10+</sup> 325 326static setOrCreate<T>(propName: string, newValue: T): void 327 328如果propName已经在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中存在,并且newValue和propName对应属性的值不同,则设置propName对应属性的值为newValue,否则状态变量不会通知UI刷新propName对应属性的值。 329如果propName不存在,则创建propName属性,值为newValue。setOrCreate只可以创建单个AppStorage的键值对,如果想创建多个AppStorage键值对,可以多次调用此方法。从API version 12开始,newValue可以为null或undefined。 330 331> **说明:**<br/> 332> 从API version 12开始,AppStorage支持[Map](../../../ui/state-management/arkts-appstorage.md#装饰map类型变量)、[Set](../../../ui/state-management/arkts-appstorage.md#装饰set类型变量)、[Date类型](../../../ui/state-management/arkts-appstorage.md#装饰date类型变量),支持null、undefined以及[联合类型](../../../ui/state-management/arkts-appstorage.md#appstorage支持联合类型)。 333 334**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 335 336**系统能力:** SystemCapability.ArkUI.ArkUI.Full 337 338**参数:** 339 340| 参数名 | 类型 | 必填 | 说明 | 341| -------- | ------ | ---- | ---------------------- | 342| propName | string | 是 | AppStorage中的属性名。 | 343| newValue | T | 是 | 属性值,从API version 12开始可以为null或undefined。 | 344 345**示例:** 346```ts 347AppStorage.setOrCreate('simpleProp', 121); 348``` 349 350 351### delete<sup>10+</sup> 352 353static delete(propName: string): boolean 354 355在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中删除propName对应的属性。 356 357在AppStorage中删除该属性的前提是必须保证该属性没有订阅者。如果有订阅者,则返回false。如果没有订阅者则删除成功并返回true。 358 359属性的订阅者为: 360 3611. [\@StorageLink](../../../ui/state-management/arkts-appstorage.md#storagelink)、[\@StorageProp](../../../ui/state-management/arkts-appstorage.md#storageprop)装饰的变量。 362 3632. 通过[link](#link10)、[prop](#prop10)、[setAndLink](#setandlink10)、[setAndProp](#setandprop10)接口返回的[SubscribedAbstractProperty](#subscribedabstractproperty)的实例。 364 365如果想要删除这些订阅者,可以通过以下方式: 366 3671. 删除\@StorageLink、\@StorageProp所在的自定义组件。删除自定义组件请参考[自定义组件的删除](../../../ui/state-management/arkts-page-custom-components-lifecycle.md#自定义组件的删除)。 368 3692. 对link、prop、setAndLink、setAndProp接口返回的SubscribedAbstractProperty的实例调用[aboutToBeDeleted](#abouttobedeleted10)接口。 370 371**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 372 373**系统能力:** SystemCapability.ArkUI.ArkUI.Full 374 375**参数:** 376 377| 参数名 | 类型 | 必填 | 说明 | 378| -------- | ------ | ---- | ---------------- | 379| propName | string | 是 | AppStorage中的属性名。 | 380 381**返回值:** 382 383| 类型 | 说明 | 384| ------- | ---------------------------------------- | 385| boolean | 如果AppStorage中有对应的属性,且该属性已经没有订阅者,则删除成功,返回true。如果属性不存在,或者该属性还存在订阅者,则返回false。 | 386 387**示例:** 388```ts 389AppStorage.setOrCreate('PropA', 47); 390AppStorage.link<number>('PropA'); 391let res: boolean = AppStorage.delete('PropA'); // false,PropA 还存在订阅者 392 393AppStorage.setOrCreate('PropB', 48); 394let res1: boolean = AppStorage.delete('PropB'); // true,PropB 已从AppStorage成功删除 395``` 396 397 398### keys<sup>10+</sup> 399 400static keys(): IterableIterator<string> 401 402返回[AppStorage](../../../ui/state-management/arkts-appstorage.md)中所有的属性名。 403 404**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 405 406**系统能力:** SystemCapability.ArkUI.ArkUI.Full 407 408**返回值:** 409 410| 类型 | 说明 | 411| ------------------------------ | ------------------ | 412| IterableIterator<string> | AppStorage中所有的属性名。 | 413 414**示例:** 415```ts 416AppStorage.setOrCreate('PropB', 48); 417let keys: IterableIterator<string> = AppStorage.keys(); 418``` 419 420 421### clear<sup>10+</sup> 422 423static clear(): boolean 424 425删除[AppStorage](../../../ui/state-management/arkts-appstorage.md)中所有属性。删除所有属性的前提是,AppStorage已经没有任何订阅者。如果有订阅者,clear将不会生效并返回false。如果没有订阅者,则删除成功,并返回true。 426 427订阅者的含义参考[delete](#delete10)。 428 429**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 430 431**系统能力:** SystemCapability.ArkUI.ArkUI.Full 432 433**返回值:** 434 435| 类型 | 说明 | 436| ------- | ------------------------------------------------------------ | 437| boolean | 如果AppStorage中的属性已经没有订阅者则删除成功,返回true。否则返回false。 | 438 439**示例:** 440```ts 441AppStorage.setOrCreate('PropA', 47); 442let res: boolean = AppStorage.clear(); // true,已经没有订阅者 443``` 444 445 446### size<sup>10+</sup> 447 448static size(): number 449 450返回[AppStorage](../../../ui/state-management/arkts-appstorage.md)中的属性数量。 451 452**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 453 454**系统能力:** SystemCapability.ArkUI.ArkUI.Full 455 456**返回值:** 457 458| 类型 | 说明 | 459| ------ | ------------------- | 460| number | 返回AppStorage中属性的数量。 | 461 462**示例:** 463```ts 464AppStorage.setOrCreate('PropB', 48); 465let res: number = AppStorage.size(); // 1 466``` 467 468 469### Link<sup>(deprecated)</sup> 470 471static Link(propName: string): any 472 473与[AppStorage](../../../ui/state-management/arkts-appstorage.md)中对应的propName建立双向数据绑定。如果给定的propName在AppStorage中存在,返回与AppStorage中propName对应属性的双向绑定数据。 474 475双向绑定数据的修改会同步回AppStorage中,AppStorage会将变化同步到所有绑定该propName的数据和自定义组件中。 476 477如果AppStorage中不存在propName,则返回undefined。 478 479> **说明:**<br/> 480> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[link10+](#link10)替代。 481 482**系统能力:** SystemCapability.ArkUI.ArkUI.Full 483 484**参数:** 485 486| 参数名 | 类型 | 必填 | 说明 | 487| -------- | ------ | ---- | ---------------- | 488| propName | string | 是 | AppStorage中的属性名。 | 489 490**返回值:** 491 492| 类型 | 说明 | 493| -------------------------------- | ------------------------------------------------------------ | 494| any | 返回双向绑定的数据,如果AppStorage中不存在对应的propName,则返回undefined。 | 495 496**示例:** 497```ts 498AppStorage.SetOrCreate('PropA', 47); 499let linkToPropA1: SubscribedAbstractProperty<number> = AppStorage.Link('PropA'); 500let linkToPropA2: SubscribedAbstractProperty<number> = AppStorage.Link('PropA'); // linkToPropA2.get() == 47 501linkToPropA1.set(48); // 双向同步: linkToPropA1.get() == linkToPropA2.get() == 48 502``` 503 504### SetAndLink<sup>(deprecated)</sup> 505 506static SetAndLink<T>(propName: string, defaultValue: T): SubscribedAbstractProperty<T> 507 508与[Link](#linkdeprecated)接口类似,如果给定的propName在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中存在,则返回该propName对应的属性的双向绑定数据。如果不存在,则使用defaultValue在AppStorage中创建和初始化propName对应的属性,并返回其双向绑定数据。defaultValue必须为T类型,且不能为null或undefined。 509 510> **说明:**<br/> 511> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[setAndLink10+](#setandlink10)替代。 512 513**系统能力:** SystemCapability.ArkUI.ArkUI.Full 514 515**参数:** 516 517| 参数名 | 类型 | 必填 | 说明 | 518| ------------ | ------ | ---- | ------------------------------------------------------------ | 519| propName | string | 是 | AppStorage中的属性名。 | 520| defaultValue | T | 是 | 当propName在AppStorage中不存在,使用defaultValue在AppStorage中初始化对应的propName,defaultValue不能为null或undefined。 | 521 522**返回值:** 523 524| 类型 | 说明 | 525| ----------------------------------- | ---------------------------------------- | 526| [SubscribedAbstractProperty<T>](#subscribedabstractproperty) | SubscribedAbstractProperty<T>的实例,和AppStorage中propName对应属性的双向绑定的数据。 | 527 528**示例:** 529```ts 530AppStorage.SetOrCreate('PropA', 47); 531let link1: SubscribedAbstractProperty<number> = AppStorage.SetAndLink('PropB', 49); // 用默认值49创建PropB 532let link2: SubscribedAbstractProperty<number> = AppStorage.SetAndLink('PropA', 50); // PropA已存在,值为47 533``` 534 535 536### Prop<sup>(deprecated)</sup> 537 538static Prop(propName: string): any 539 540与[AppStorage](../../../ui/state-management/arkts-appstorage.md)中对应的propName建立单向属性绑定。如果给定的propName在AppStorage中存在,则返回与AppStorage中propName对应属性的单向绑定数据。如果AppStorage中不存在propName,则返回undefined。单向绑定数据的修改不会被同步回AppStorage中。 541 542> **说明:**<br/> 543> Prop仅支持简单类型。 544> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[prop10+](#prop10)替代。 545 546**系统能力:** SystemCapability.ArkUI.ArkUI.Full 547 548**参数:** 549 550| 参数名 | 类型 | 必填 | 说明 | 551| -------- | ------ | ---- | ---------------- | 552| propName | string | 是 | AppStorage中的属性名。 | 553 554**返回值:** 555 556| 类型 | 说明 | 557| -------------------------------- | ------------------------------------------------------------ | 558| any | 返回单向绑定的数据,如果AppStorage中不存在对应的propName,则返回undefined。 | 559 560**示例:** 561```ts 562AppStorage.SetOrCreate('PropA', 47); 563let prop1: SubscribedAbstractProperty<number> = AppStorage.Prop('PropA'); 564let prop2: SubscribedAbstractProperty<number> = AppStorage.Prop('PropA'); 565prop1.set(1); // 单向同步:prop1.get()的值为1,prop2.get()的值为47 566``` 567 568### SetAndProp<sup>(deprecated)</sup> 569 570static SetAndProp<S>(propName: string, defaultValue: S): SubscribedAbstractProperty<S> 571 572与[Prop](#propdeprecated)接口类似。如果给定的propName在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中存在,则返回该propName对应的属性的单向绑定数据。如果不存在,则使用defaultValue在AppStorage中创建和初始化propName对应的属性,返回其单向绑定数据。defaultValue必须为S类型,且不能为null或undefined。 573 574> **说明:**<br/> 575> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[setAndProp10+](#setandprop10)替代。 576 577**系统能力:** SystemCapability.ArkUI.ArkUI.Full 578 579**参数:** 580 581| 参数名 | 类型 | 必填 | 说明 | 582| ------------ | ------ | ---- | ------------------------------------------------------------ | 583| propName | string | 是 | AppStorage中的属性名。 | 584| defaultValue | S | 是 | 当propName在AppStorage中不存在时,使用defaultValue在AppStorage中初始化对应的propName,defaultValue不能为null或undefined。 | 585 586**返回值:** 587 588| 类型 | 说明 | 589| ----------------------------------- | --------------------------------------- | 590| [SubscribedAbstractProperty<S>](#subscribedabstractproperty) | SubscribedAbstractProperty<S>的实例。 | 591 592**示例:** 593```ts 594AppStorage.SetOrCreate('PropA', 47); 595let prop: SubscribedAbstractProperty<number> = AppStorage.SetAndProp('PropB', 49); // PropA -> 47, PropB -> 49 596``` 597 598### Has<sup>(deprecated)</sup> 599 600static Has(propName: string): boolean 601 602判断propName对应的属性是否在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中存在。 603 604> **说明:**<br/> 605> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[has10+](#has10)替代。 606 607**系统能力:** SystemCapability.ArkUI.ArkUI.Full 608 609**参数:** 610 611| 参数名 | 类型 | 必填 | 说明 | 612| -------- | ------ | ---- | ---------------- | 613| propName | string | 是 | AppStorage中的属性名。 | 614 615**返回值:** 616 617| 类型 | 说明 | 618| ------- | ---------------------------------------- | 619| boolean | 如果propName对应的属性在AppStorage中存在,则返回true。不存在则返回false。 | 620 621**示例:** 622```ts 623AppStorage.Has('simpleProp'); 624``` 625 626### Get<sup>(deprecated)</sup> 627 628static Get<T>(propName: string): T | undefined 629 630获取propName在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中对应的属性值。如果不存在则返回undefined。 631 632> **说明:**<br/> 633> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[get10+](#get10)替代。 634 635**系统能力:** SystemCapability.ArkUI.ArkUI.Full 636 637**参数:** 638 639| 参数名 | 类型 | 必填 | 说明 | 640| -------- | ------ | ---- | ---------------- | 641| propName | string | 是 | AppStorage中的属性名。 | 642 643**返回值:** 644 645| 类型 | 说明 | 646| ------------------------ | ------------------------------------------------------------ | 647| T \| undefined | AppStorage中propName对应的属性值,如果不存在则返回undefined。 | 648 649**示例:** 650```ts 651AppStorage.SetOrCreate('PropA', 47); 652let value: number = AppStorage.Get('PropA') as number; // 47 653``` 654 655### Set<sup>(deprecated)</sup> 656 657static Set<T>(propName: string, newValue: T): boolean 658 659在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中设置propName对应属性的值。 660 661> **说明:**<br/> 662> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[set10+](#set10)替代。 663 664**系统能力:** SystemCapability.ArkUI.ArkUI.Full 665 666**参数:** 667 668| 参数名 | 类型 | 必填 | 说明 | 669| -------- | ------ | ---- | ------------------------------- | 670| propName | string | 是 | AppStorage中的属性名。 | 671| newValue | T | 是 | 属性值,不能为null或undefined。 | 672 673**返回值:** 674 675| 类型 | 说明 | 676| ------- | ------------------------------------------------------------ | 677| boolean | 如果AppStorage中不存在propName对应的属性,或者设置的newValue是undefined或者null,返回false。设置成功则返回true。 | 678 679**示例:** 680```ts 681AppStorage.SetOrCreate('PropA', 48); 682let res: boolean = AppStorage.Set('PropA', 47) // true 683let res1: boolean = AppStorage.Set('PropB', 47) // false 684``` 685 686### SetOrCreate<sup>(deprecated)</sup> 687 688static SetOrCreate<T>(propName: string, newValue: T): void 689 690如果propName已经在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中存在,则设置propName对应是属性的值为newValue。如果不存在,则创建propName属性,值为newValue。 691 692newValue不能为null或undefined。 693 694> **说明:**<br/> 695> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[setOrCreate10+](#setorcreate10)替代。 696 697**系统能力:** SystemCapability.ArkUI.ArkUI.Full 698 699**参数:** 700 701| 参数名 | 类型 | 必填 | 说明 | 702| -------- | ------ | ---- | ------------------------------- | 703| propName | string | 是 | AppStorage中的属性名。 | 704| newValue | T | 是 | 属性值,不能为null或undefined。 | 705 706**示例:** 707```ts 708AppStorage.SetOrCreate('simpleProp', 121); 709``` 710 711### Delete<sup>(deprecated)</sup> 712 713static Delete(propName: string): boolean 714 715在[AppStorage](../../../ui/state-management/arkts-appstorage.md)中删除propName对应的属性。 716 717在AppStorage中删除该属性的前提是必须保证该属性没有订阅者。如果有订阅者,则返回false。如果没有订阅者则删除成功并返回true。 718 719属性的订阅者为[Link](#linkdeprecated)、[Prop](#propdeprecated)等接口绑定的propName,以及[\@StorageLink('propName')](../../../ui/state-management/arkts-appstorage.md#storagelink)和[\@StorageProp('propName')](../../../ui/state-management/arkts-appstorage.md#storageprop)。如果自定义组件中使用\@StorageLink('propName')和\@StorageProp('propName')或者SubscribedAbstractProperty实例依旧对propName有同步关系,则该属性不能从AppStorage中删除。 720 721> **说明:**<br/> 722> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[delete10+](#delete10)替代。 723 724**系统能力:** SystemCapability.ArkUI.ArkUI.Full 725 726**参数:** 727 728| 参数名 | 类型 | 必填 | 说明 | 729| -------- | ------ | ---- | ---------------- | 730| propName | string | 是 | AppStorage中的属性名。 | 731 732**返回值:** 733 734| 类型 | 说明 | 735| ------- | ---------------------------------------- | 736| boolean | 如果AppStorage中有对应的属性,且该属性已经没有订阅者,则删除成功,返回true。如果属性不存在,或者该属性还存在订阅者,则返回false。 | 737 738**示例:** 739```ts 740AppStorage.SetOrCreate('PropA', 47); 741AppStorage.Link('PropA'); 742let res: boolean = AppStorage.Delete('PropA'); // false,PropA 还存在订阅者 743 744AppStorage.SetOrCreate('PropB', 48); 745let res1: boolean = AppStorage.Delete('PropB'); // true,PropB 已从AppStorage成功删除 746``` 747 748### Keys<sup>(deprecated)</sup> 749 750static Keys(): IterableIterator<string> 751 752返回[AppStorage](../../../ui/state-management/arkts-appstorage.md)中所有的属性名。 753 754> **说明:**<br/> 755> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[keys10+](#keys10)替代。 756 757**系统能力:** SystemCapability.ArkUI.ArkUI.Full 758 759**返回值:** 760 761| 类型 | 说明 | 762| ------------------------------ | ------------------ | 763| IterableIterator<string> | AppStorage中所有的属性名。 | 764 765**示例:** 766```ts 767AppStorage.SetOrCreate('PropB', 48); 768let keys: IterableIterator<string> = AppStorage.Keys(); 769``` 770 771 772### staticClear<sup>(deprecated)</sup> 773 774static staticClear(): boolean 775 776删除所有的属性。 777 778> **说明:**<br/> 779> 从API version 7 开始支持,从API version 9 开始废弃,推荐使用[clear10+](#clear10)替代。 780 781**系统能力:** SystemCapability.ArkUI.ArkUI.Full 782 783**返回值:** 784 785| 类型 | 说明 | 786| ------- | --------------------------------- | 787| boolean | 删除所有的属性。如果删除成功,返回true;如果当前有状态变量依旧引用此属性,返回false。 | 788 789**示例:** 790```ts 791let simple = AppStorage.staticClear(); 792``` 793 794 795### Clear<sup>(deprecated)</sup> 796 797static Clear(): boolean 798 799删除[AppStorage](../../../ui/state-management/arkts-appstorage.md)中所有属性。删除所有属性的前提是,AppStorage已经没有任何订阅者。如果有订阅者,Clear将不会生效并返回false。如果没有订阅者且删除成功则返回true。 800 801订阅者的含义参考[delete](#delete10)。 802 803> **说明:**<br/> 804> 从API version 9 开始支持,从API version 10 开始废弃,推荐使用[clear10+](#clear10)替代。 805 806**系统能力:** SystemCapability.ArkUI.ArkUI.Full 807 808**返回值:** 809 810| 类型 | 说明 | 811| ------- | ------------------------------------------------------------ | 812| boolean | 如果AppStorage中的属性已经没有订阅者则删除成功,返回true。否则返回false。 | 813 814**示例:** 815```typescript 816AppStorage.SetOrCreate('PropA', 47); 817let res: boolean = AppStorage.Clear(); // true,已经没有订阅者 818``` 819 820 821### IsMutable<sup>(deprecated)</sup> 822 823static IsMutable(propName: string): boolean 824 825返回[AppStorage](../../../ui/state-management/arkts-appstorage.md)中propName对应的属性是否是可变的。 826 827> **说明:**<br/> 828> 从API version 7 开始支持,从API version 10 开始废弃。 829 830**系统能力:** SystemCapability.ArkUI.ArkUI.Full 831 832**参数:** 833 834| 参数名 | 类型 | 必填 | 说明 | 835| -------- | ------ | ---- | ---------------- | 836| propName | string | 是 | AppStorage中的属性名。 | 837 838**返回值:** 839 840| 类型 | 说明 | 841| ------- | -------------------------------- | 842| boolean | 返回AppStorage中propNam对应的属性是否是可变的。当前该返回值恒为true。 | 843 844**示例:** 845```ts 846AppStorage.SetOrCreate('PropA', 47); 847let res: boolean = AppStorage.IsMutable('simpleProp'); 848``` 849 850 851### Size<sup>(deprecated)</sup> 852 853static Size(): number 854 855返回[AppStorage](../../../ui/state-management/arkts-appstorage.md)中的属性数量。 856 857> **说明:**<br/> 858> 从API version 7 开始支持,从API version 10 开始废弃,推荐使用[size10+](#size10)替代。 859 860**系统能力:** SystemCapability.ArkUI.ArkUI.Full 861 862**返回值:** 863 864| 类型 | 说明 | 865| ------ | ------------------- | 866| number | 返回AppStorage中属性的数量。 | 867 868**示例:** 869```ts 870AppStorage.SetOrCreate('PropB', 48); 871let res: number = AppStorage.Size(); // 1 872``` 873 874 875## LocalStorage<sup>9+</sup> 876 877 878LocalStorage具体UI使用说明,详见[LocalStorage(页面级UI状态存储)](../../../ui/state-management/arkts-localstorage.md) 879 880**卡片能力:** 从API version 9开始,支持在ArkTS卡片中使用。 881 882**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 883 884**系统能力:** SystemCapability.ArkUI.ArkUI.Full 885 886### constructor<sup>9+</sup> 887 888constructor(initializingProperties?: Object) 889 890创建一个新的[LocalStorage](../../../ui/state-management/arkts-localstorage.md)实例。使用Object.keys(initializingProperties)返回的属性和其数值,初始化LocalStorage实例。 891 892**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 893 894**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 895 896**系统能力:** SystemCapability.ArkUI.ArkUI.Full 897 898**参数:** 899 900| 参数名 | 类型 | 必填 | 说明 | 901| ---------------------- | ------ | ---- | ---------------------------------------- | 902| initializingProperties | Object | 否 | 用initializingProperties包含的属性和数值初始化LocalStorage。initializingProperties不能为undefined。 | 903 904**示例:** 905```ts 906let para: Record<string, number> = { 'PropA': 47 }; 907let storage: LocalStorage = new LocalStorage(para); 908``` 909 910 911### getShared<sup>(deprecated)</sup> 912 913static getShared(): LocalStorage 914 915获取当前stage共享的[LocalStorage](../../../ui/state-management/arkts-localstorage.md)实例。 916 917> **说明:** 918> 919> 从API version 10开始支持,从API version 18开始废弃,建议使用[UIContext](../js-apis-arkui-UIContext.md#uicontext)中的[getSharedLocalStorage](../js-apis-arkui-UIContext.md#getsharedlocalstorage12)替代。 920> 921> 从API version 12开始,可以通过使用[UIContext](../js-apis-arkui-UIContext.md#uicontext)中的[getSharedLocalStorage](../js-apis-arkui-UIContext.md#getsharedlocalstorage12)来明确UI的执行上下文。 922 923**卡片能力:** 从API version 10开始,该接口支持在ArkTS卡片中使用。 924 925**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 926 927**系统能力:** SystemCapability.ArkUI.ArkUI.Full 928 929**模型约束:** 此接口仅可在Stage模型下使用。 930 931**返回值:** 932 933| 类型 | 说明 | 934| ------------------------------ | ----------------- | 935| [LocalStorage](#localstorage9) | 返回LocalStorage实例。 | 936 937**示例:** 938getShared具体使用,见[在UI页面通过getShared接口获取在通过loadContent共享的LocalStorage实例](../../../ui/state-management/arkts-localstorage.md#将localstorage实例从uiability共享到一个或多个视图)。 939 940 941### has<sup>9+</sup> 942 943has(propName: string): boolean 944 945判断propName对应的属性是否在[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中存在。 946 947**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 948 949**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 950 951**系统能力:** SystemCapability.ArkUI.ArkUI.Full 952 953**参数:** 954 955| 参数名 | 类型 | 必填 | 说明 | 956| -------- | ------ | ---- | ------------------ | 957| propName | string | 是 | LocalStorage中的属性名。 | 958 959**返回值:** 960 961| 类型 | 说明 | 962| ------- | ------------------------------------------------------------ | 963| boolean | 如果propName对应的属性在LocalStorage中存在,则返回true。不存在则返回false。 | 964 965**示例:** 966```ts 967let para: Record<string, number> = { 'PropA': 47 }; 968let storage: LocalStorage = new LocalStorage(para); 969storage.has('PropA'); // true 970``` 971 972 973### get<sup>9+</sup> 974 975get<T>(propName: string): T | undefined 976 977获取propName在[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中对应的属性值。 978 979**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 980 981**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 982 983**系统能力:** SystemCapability.ArkUI.ArkUI.Full 984 985**参数:** 986 987| 参数名 | 类型 | 必填 | 说明 | 988| -------- | ------ | ---- | ------------------ | 989| propName | string | 是 | LocalStorage中的属性名。 | 990 991**返回值:** 992 993| 类型 | 说明 | 994| ------------------------ | ------------------------------------------------------------ | 995| T \| undefined | LocalStorage中propName对应的属性值,如果不存在则返回undefined。 | 996 997**示例:** 998```ts 999let para: Record<string, number> = { 'PropA': 47 }; 1000let storage: LocalStorage = new LocalStorage(para); 1001let value: number = storage.get('PropA') as number; // 47 1002``` 1003 1004 1005### set<sup>9+</sup> 1006 1007set<T>(propName: string, newValue: T): boolean 1008 1009在[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中设置propName对应属性的值。如果newValue的值和propName对应属性的值相同,即不需要做赋值操作,状态变量不会通知UI刷新propName对应属性的值。从API version 12开始,newValue可以为null或undefined。 1010 1011> **说明:** 1012> 1013> 从API version 12开始,LocalStorage支持[Map](../../../ui/state-management/arkts-localstorage.md#装饰map类型变量)、[Set](../../../ui/state-management/arkts-localstorage.md#装饰set类型变量)、[Date类型](../../../ui/state-management/arkts-localstorage.md#装饰date类型变量),支持null、undefined以及[联合类型](../../../ui/state-management/arkts-localstorage.md#localstorage支持联合类型)。 1014 1015**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 1016 1017**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1018 1019**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1020 1021**参数:** 1022 1023| 参数名 | 类型 | 必填 | 说明 | 1024| -------- | ------ | ---- | ----------------------- | 1025| propName | string | 是 | LocalStorage中的属性名。 | 1026| newValue | T | 是 | 属性值,从API version 12开始可以为undefined或者null。 | 1027 1028**返回值:** 1029 1030| 类型 | 说明 | 1031| ------- | ------------------------------------------------------------ | 1032| boolean | 如果LocalStorage中不存在propName对应的属性,返回false。设置成功返回true。 | 1033 1034**示例:** 1035 1036```ts 1037let para: Record<string, number> = { 'PropA': 47 }; 1038let storage: LocalStorage = new LocalStorage(para); 1039let res: boolean = storage.set('PropA', 47); // true 1040let res1: boolean = storage.set('PropB', 47); // false 1041``` 1042 1043 1044### setOrCreate<sup>9+</sup> 1045 1046setOrCreate<T>(propName: string, newValue: T): boolean 1047 1048如果propName已经在[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中存在,并且newValue和propName对应属性的值不同,则设置propName对应属性的值为newValue,否则状态变量不会通知UI刷新propName对应属性的值。 1049如果propName不存在,则创建propName属性,值为newValue。setOrCreate只可以创建单个LocalStorage的键值对,如果想创建多个LocalStorage键值对,可以多次调用此方法。从API version 12开始,newValue可以为null或undefined。 1050 1051> **说明:** 1052> 1053> 从API version 12开始,LocalStorage支持[Map](../../../ui/state-management/arkts-localstorage.md#装饰map类型变量)、[Set](../../../ui/state-management/arkts-localstorage.md#装饰set类型变量)、[Date类型](../../../ui/state-management/arkts-localstorage.md#装饰date类型变量),支持null、undefined以及[联合类型](../../../ui/state-management/arkts-localstorage.md#localstorage支持联合类型)。 1054 1055**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 1056 1057**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1058 1059**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1060 1061**参数:** 1062 1063| 参数名 | 类型 | 必填 | 说明 | 1064| -------- | ------ | ---- | ----------------------- | 1065| propName | string | 是 | LocalStorage中的属性名。 | 1066| newValue | T | 是 | 属性值,从API version 12开始可以为undefined或者null。 | 1067 1068**返回值:** 1069 1070| 类型 | 说明 | 1071| ------- | ------------------------------------------------------------ | 1072| boolean | 如果LocalStorage中存在propName,则更新其值为newValue,返回true。<br/>如果LocalStorage中不存在propName,则创建propName,并初始化其值为newValue,返回true。 | 1073 1074**示例:** 1075 1076```ts 1077let para: Record<string, number> = { 'PropA': 47 }; 1078let storage: LocalStorage = new LocalStorage(para); 1079let res: boolean = storage.setOrCreate('PropA', 121); // true 1080let res1: boolean = storage.setOrCreate('PropB', 111); // true 1081let res2: boolean = storage.setOrCreate('PropB', null); // true (API12及之后返回true,API11及之前返回false) 1082``` 1083 1084### ref<sup>12+</sup> 1085 1086public ref\<T\>(propName: string): AbstractProperty\<T\> | undefined 1087 1088如果给定的propName在[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中存在,则获得LocalStorage中propName对应数据的引用。否则,返回undefined。 1089 1090与[link](#link9)的功能基本一致,但不需要手动释放返回的[AbstractProperty](#abstractproperty)类型的变量。 1091 1092**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1093 1094**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1095 1096**参数:** 1097 1098| 参数名 | 类型 | 必填 | 说明 | 1099| -------- | ------ | ---- | ------------------------ | 1100| propName | string | 是 | LocalStorage中的属性名。 | 1101 1102**返回值:** 1103 1104| 类型 | 说明 | 1105| -------------------------------------- | ------------------------------------------------------------ | 1106| [AbstractProperty<T>](#abstractproperty) \| undefined | LocalStorage中propName对应属性的引用,如果LocalStorage中不存在对应的propName,则返回undefined。 | 1107 1108**示例:** 1109 1110```ts 1111let para: Record<string, number> = { 'PropA': 47 }; 1112let storage: LocalStorage = new LocalStorage(para); 1113let refToPropA1: AbstractProperty<number> | undefined = storage.ref('PropA'); 1114let refToPropA2: AbstractProperty<number> | undefined = storage.ref('PropA'); // refToPropA2.get() == 47 1115refToPropA1?.set(48); // refToPropA1.get() == refToPropA2.get() == 48 1116``` 1117 1118### setAndRef<sup>12+</sup> 1119 1120public setAndRef<T>(propName: string, defaultValue: T): AbstractProperty<T> 1121 1122与[ref](#ref12-1)接口类似,如果给定的propName在[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中存在,则获得LocalStorage中propName对应数据的引用。如果不存在,则使用defaultValue在LocalStorage中创建和初始化propName对应的属性,并返回其引用。defaultValue须为T类型,可以为null或undefined。 1123 1124与[setAndLink](#setandlink9)的功能基本一致,但不需要手动释放返回的[AbstractProperty](#abstractproperty)类型的变量。 1125 1126> **说明:**<br/> 1127> 从API version 12开始,LocalStorage支持[Map](../../../ui/state-management/arkts-localstorage.md#装饰map类型变量)、[Set](../../../ui/state-management/arkts-localstorage.md#装饰set类型变量)、[Date类型](../../../ui/state-management/arkts-localstorage.md#装饰date类型变量),支持null、undefined以及[联合类型](../../../ui/state-management/arkts-localstorage.md#localstorage支持联合类型)。 1128 1129**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1130 1131**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1132 1133**参数:** 1134 1135| 参数名 | 类型 | 必填 | 说明 | 1136| ------------ | ------ | ---- | ------------------------------------------------------------ | 1137| propName | string | 是 | LocalStorage中的属性名。 | 1138| defaultValue | T | 是 | 当propName在LocalStorage中不存在时,使用defaultValue在LocalStorage中初始化对应的propName,defaultValue可以为null或undefined。 | 1139 1140**返回值:** 1141 1142| 类型 | 说明 | 1143| ------------------------- | ------------------------------------------------------------ | 1144| [AbstractProperty<T>](#abstractproperty) | AbstractProperty<T>的实例,为LocalStorage中propName对应属性的引用。 | 1145 1146**示例:** 1147 1148```ts 1149let para: Record<string, number> = { 'PropA': 47 }; 1150let storage: LocalStorage = new LocalStorage(para); 1151let ref1: AbstractProperty<number> = storage.setAndRef('PropB', 49); // 用默认值49创建PropB 1152let ref2: AbstractProperty<number> = storage.setAndRef('PropA', 50); // PropA已存在,值为47 1153``` 1154 1155### link<sup>9+</sup> 1156 1157link<T>(propName: string): SubscribedAbstractProperty<T> 1158 1159如果给定的propName在[LocalStorage](../../../ui/state-management/arkts-localstorage.md)实例中存在,则返回与LocalStorage中propName对应属性的双向绑定数据。 1160 1161双向绑定数据的修改会被同步回LocalStorage中,LocalStorage会将变化同步到所有绑定该propName的数据和Component中。 1162 1163如果LocalStorage中不存在propName,则返回undefined。 1164 1165**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 1166 1167**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1168 1169**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1170 1171**参数:** 1172 1173| 参数名 | 类型 | 必填 | 说明 | 1174| -------- | ------ | ---- | ------------------ | 1175| propName | string | 是 | LocalStorage中的属性名。 | 1176 1177**返回值:** 1178 1179| 类型 | 说明 | 1180| ----------------------------------- | ------------------------------------------------------------ | 1181| [SubscribedAbstractProperty<T>](#subscribedabstractproperty) | SubscribedAbstractProperty<T>的实例,与LocalStorage中propName对应属性的双向绑定的数据,如果LocalStorage中不存在对应的propName,则返回undefined。 | 1182 1183**示例:** 1184```ts 1185let para: Record<string, number> = { 'PropA': 47 }; 1186let storage: LocalStorage = new LocalStorage(para); 1187let linkToPropA1: SubscribedAbstractProperty<number> = storage.link('PropA'); 1188let linkToPropA2: SubscribedAbstractProperty<number> = storage.link('PropA'); // linkToPropA2.get() == 47 1189linkToPropA1.set(48); // 双向同步: linkToPropA1.get() == linkToPropA2.get() == 48 1190``` 1191 1192 1193### setAndLink<sup>9+</sup> 1194 1195setAndLink<T>(propName: string, defaultValue: T): SubscribedAbstractProperty<T> 1196 1197与[link](#link9)接口类似,如果给定的propName在[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中存在,则返回该propName对应的属性的双向绑定数据。如果不存在,则使用defaultValue在LocalStorage中创建和初始化propName对应的属性,返回其双向绑定数据。defaultValue必须为T类型,从API开始defaultValue可以为null或undefined。 1198 1199> **说明:** 1200> 1201> 从API version 12开始,LocalStorage支持[Map](../../../ui/state-management/arkts-localstorage.md#装饰map类型变量)、[Set](../../../ui/state-management/arkts-localstorage.md#装饰set类型变量)、[Date类型](../../../ui/state-management/arkts-localstorage.md#装饰date类型变量),支持null、undefined以及[联合类型](../../../ui/state-management/arkts-localstorage.md#localstorage支持联合类型)。 1202 1203**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 1204 1205**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1206 1207**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1208 1209**参数:** 1210 1211| 参数名 | 类型 | 必填 | 说明 | 1212| ------------ | ------ | ---- | ------------------------------------------------------------ | 1213| propName | string | 是 | LocalStorage中的属性名。 | 1214| defaultValue | T | 是 | 当propName在LocalStorage中不存在时,使用defaultValue在LocalStorage中初始化对应的propName,从API version 12开始defaultValue可以为null或undefined。 | 1215 1216**返回值:** 1217 1218| 类型 | 说明 | 1219| ----------------------------------- | ------------------------------------------------------------ | 1220| [SubscribedAbstractProperty<T>](#subscribedabstractproperty) | SubscribedAbstractProperty<T>的实例,与LocalStorage中propName对应属性的双向绑定的数据。 | 1221 1222**示例:** 1223```ts 1224let para: Record<string, number> = { 'PropA': 47 }; 1225let storage: LocalStorage = new LocalStorage(para); 1226let link1: SubscribedAbstractProperty<number> = storage.setAndLink('PropB', 49); // 用默认值49创建PropB 1227let link2: SubscribedAbstractProperty<number> = storage.setAndLink('PropA', 50); // PropA已存在,值为47 1228``` 1229 1230 1231### prop<sup>9+</sup> 1232 1233prop<S>(propName: string): SubscribedAbstractProperty<S> 1234 1235如果给定的propName在[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中存在,则返回与LocalStorage中propName对应属性的单向绑定数据。如果LocalStorage中不存在propName,则返回undefined。单向绑定数据的修改不会被同步回LocalStorage中。 1236 1237**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 1238 1239**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1240 1241**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1242 1243**参数:** 1244 1245| 参数名 | 类型 | 必填 | 说明 | 1246| -------- | ------ | ---- | ------------------ | 1247| propName | string | 是 | LocalStorage中的属性名。 | 1248 1249**返回值:** 1250 1251| 类型 | 说明 | 1252| ----------------------------------- | ------------------------------------------------------------ | 1253| [SubscribedAbstractProperty<S>](#subscribedabstractproperty) | SubscribedAbstractProperty<S>的实例,和LocalStorage中propName对应属性的单向绑定的数据。如果LocalStorage中不存在对应的propName,则返回undefined。 | 1254 1255**示例:** 1256```ts 1257let para: Record<string, number> = { 'PropA': 47 }; 1258let storage: LocalStorage = new LocalStorage(para); 1259let prop1: SubscribedAbstractProperty<number> = storage.prop('PropA'); 1260let prop2: SubscribedAbstractProperty<number> = storage.prop('PropA'); 1261prop1.set(1); // 单向同步:prop1.get()的值为1,prop2.get()的值为47 1262``` 1263 1264 1265### setAndProp<sup>9+</sup> 1266 1267setAndProp<S>(propName: string, defaultValue: S): SubscribedAbstractProperty<S> 1268 1269与[prop](#prop9)接口类似。如果propName在[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中存在,则返回该propName对应的属性的单向绑定数据。如果不存在,则使用defaultValue在LocalStorage中创建和初始化propName对应的属性,返回其单向绑定数据。defaultValue必须为S类型,从API version 12开始defaultValue可以为null或undefined。 1270 1271> **说明:** 1272> 1273> 从API version 12开始,LocalStorage支持[Map](../../../ui/state-management/arkts-localstorage.md#装饰map类型变量)、[Set](../../../ui/state-management/arkts-localstorage.md#装饰set类型变量)、[Date类型](../../../ui/state-management/arkts-localstorage.md#装饰date类型变量),支持null、undefined以及[联合类型](../../../ui/state-management/arkts-localstorage.md#localstorage支持联合类型)。 1274 1275**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 1276 1277**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1278 1279**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1280 1281**参数:** 1282 1283| 参数名 | 类型 | 必填 | 说明 | 1284| ------------ | ------ | ---- | ------------------------------------------------------------ | 1285| propName | string | 是 | LocalStorage中的属性名。 | 1286| defaultValue | S | 是 | 当propName在LocalStorage中不存在,使用defaultValue在LocalStorage中初始化对应的propName,从API version 12开始defaultValue可以为null或undefined。 | 1287 1288**返回值:** 1289 1290| 类型 | 说明 | 1291| ----------------------------------- | ------------------------------------------------------------ | 1292| [SubscribedAbstractProperty<S>](#subscribedabstractproperty) | SubscribedAbstractProperty<S>的实例,和LocalStorage中propName对应属性的单向绑定的数据。 | 1293 1294**示例:** 1295 1296```ts 1297let para: Record<string, number> = { 'PropA': 47 }; 1298let storage: LocalStorage = new LocalStorage(para); 1299let prop: SubscribedAbstractProperty<number> = storage.setAndProp('PropB', 49); // PropA -> 47, PropB -> 49 1300``` 1301 1302 1303### delete<sup>9+</sup> 1304 1305delete(propName: string): boolean 1306 1307在[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中删除propName对应的属性。在LocalStorage中删除属性的前提是该属性已经没有订阅者,如果有订阅者,则返回false。如果没有订阅者则删除成功并返回true。 1308 1309属性的订阅者为: 1310 13111. [\@LocalStorageLink](../../../ui/state-management/arkts-localstorage.md#localstoragelink)、[\@LocalStorageProp](../../../ui/state-management/arkts-localstorage.md#localstorageprop)装饰的变量。 1312 13132. 通过[link](#link9)、[prop](#prop9)、[setAndLink](#setandlink9)、[setAndProp](#setandprop9)接口返回的[SubscribedAbstractProperty](#subscribedabstractproperty)的实例。 1314 1315如果想要删除这些订阅者,可以通过以下方式: 1316 13171. 删除\@LocalStorageLink、\@LocalStorageProp所在的自定义组件。删除自定义组件请参考[自定义组件的删除](../../../ui/state-management/arkts-page-custom-components-lifecycle.md#自定义组件的删除)。 1318 13192. 对link、prop、setAndLink、setAndProp接口返回的SubscribedAbstractProperty的实例调用[aboutToBeDeleted](#abouttobedeleted10)接口。 1320 1321**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 1322 1323**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1324 1325**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1326 1327**参数:** 1328 1329| 参数名 | 类型 | 必填 | 说明 | 1330| -------- | ------ | ---- | ------------------ | 1331| propName | string | 是 | LocalStorage中的属性名。 | 1332 1333**返回值:** 1334 1335| 类型 | 说明 | 1336| ------- | ------------------------------------------------------------ | 1337| boolean | 如果LocalStorage中有对应的属性,且该属性已经没有订阅者,则删除成功,返回true。如果属性不存在,或者该属性还存在订阅者,则返回false。 | 1338 1339**示例:** 1340```ts 1341let para: Record<string, number> = { 'PropA': 47 }; 1342let storage: LocalStorage = new LocalStorage(para); 1343storage.link<number>('PropA'); 1344let res: boolean = storage.delete('PropA'); // false,PropA 还存在订阅者 1345let res1: boolean = storage.delete('PropB'); // false,PropB 不存在于storage中 1346storage.setOrCreate('PropB', 48); 1347let res2: boolean = storage.delete('PropB'); // true,PropB 已从storage成功删除 1348``` 1349 1350 1351### keys<sup>9+</sup> 1352 1353keys(): IterableIterator<string> 1354 1355返回[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中所有的属性名。 1356 1357**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 1358 1359**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1360 1361**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1362 1363**返回值:** 1364 1365| 类型 | 说明 | 1366| ------------------------------ | -------------------- | 1367| IterableIterator<string> | LocalStorage中所有的属性名。 | 1368 1369**示例:** 1370```ts 1371let para: Record<string, number> = { 'PropA': 47 }; 1372let storage: LocalStorage = new LocalStorage(para); 1373let keys: IterableIterator<string> = storage.keys(); 1374``` 1375 1376 1377### size<sup>9+</sup> 1378 1379size(): number 1380 1381返回[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中的属性数量。 1382 1383**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 1384 1385**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1386 1387**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1388 1389**返回值:** 1390 1391| 类型 | 说明 | 1392| ------ | ---------------------------- | 1393| number | LocalStorage中属性的数量。 | 1394 1395**示例:** 1396```ts 1397let para: Record<string, number> = { 'PropA': 47 }; 1398let storage: LocalStorage = new LocalStorage(para); 1399let res: number = storage.size(); // 1 1400``` 1401 1402 1403### clear<sup>9+</sup> 1404 1405clear(): boolean 1406 1407删除[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中所有的属性。删除所有属性的前提是已经没有任何订阅者。如果有订阅者,clear不会生效并返回false。如果没有订阅者则删除成功并返回true。 1408 1409订阅者的含义参考[delete](#delete9)。 1410 1411**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 1412 1413**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1414 1415**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1416 1417**返回值:** 1418 1419 1420| 类型 | 说明 | 1421| ------- | ------------------------------------------------------------ | 1422| boolean | 如果LocalStorage中的属性已经没有任何订阅者,则删除成功,并返回true。否则返回false。 | 1423 1424 1425**示例:** 1426```ts 1427let para: Record<string, number> = { 'PropA': 47 }; 1428let storage: LocalStorage = new LocalStorage(para); 1429let res: boolean = storage.clear(); // true,已经没有订阅者 1430``` 1431 1432 1433### GetShared<sup>(deprecated)</sup> 1434 1435static GetShared(): LocalStorage 1436 1437获取当前stage共享的[LocalStorage](../../../ui/state-management/arkts-localstorage.md)实例。 1438 1439> **说明:** 1440> 1441> 从API version 10开始废弃,建议使用[UIContext](../js-apis-arkui-UIContext.md#uicontext)中的[getSharedLocalStorage](../js-apis-arkui-UIContext.md#getsharedlocalstorage12)替代。 1442 1443**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 1444 1445**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1446 1447**模型约束:**此接口仅可在Stage模型下使用。 1448 1449**返回值:** 1450 1451| 类型 | 说明 | 1452| ------------------------------ | ----------------- | 1453| [LocalStorage](#localstorage9) | 返回LocalStorage实例。 | 1454 1455**示例:** 1456```ts 1457let storage: LocalStorage = LocalStorage.GetShared(); 1458``` 1459 1460## AbstractProperty 1461 1462**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1463 1464**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1465 1466### get<sup>12+</sup> 1467 1468get(): T 1469 1470读取[AppStorage](../../../ui/state-management/arkts-appstorage.md)/[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中所引用属性的数据。 1471 1472**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1473 1474**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1475 1476**返回值:** 1477 1478| 类型 | 说明 | 1479| ---- | ------------------------------------------- | 1480| T | AppStorage/LocalStorage中所引用属性的数据。 | 1481 1482**示例:** 1483 1484```ts 1485AppStorage.setOrCreate('PropA', 47); 1486let ref1: AbstractProperty<number> | undefined = AppStorage.ref('PropA'); 1487ref1?.get(); // ref1.get()=47 1488``` 1489 1490 1491### set<sup>12+</sup> 1492 1493set(newValue: T): void 1494 1495更新[AppStorage](../../../ui/state-management/arkts-appstorage.md)/[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中所引用属性的数据,newValue必须是T类型,可以为null或undefined。 1496 1497> **说明:**<br/> 1498> 1499> 从API version 12开始,AppStorage/LocalStorage支持Map、Set、Date类型,支持null、undefined以及联合类型。 1500 1501**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1502 1503**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1504 1505 1506**参数:** 1507 1508 1509| 参数名 | 类型 | 必填 | 说明 | 1510| -------- | ---- | ---- | ------------------------------------- | 1511| newValue | T | 是 | 要更新的数据,可以为null或undefined。 | 1512 1513 1514**示例:** 1515 1516```ts 1517AppStorage.setOrCreate('PropA', 47); 1518let ref1: AbstractProperty<number> | undefined = AppStorage.ref('PropA'); 1519ref1?.set(1); // ref1.get()=1 1520let a: Map<string, number> = new Map([['1', 0]]); 1521let ref2 = AppStorage.setAndRef('MapA', a); 1522ref2.set(a); 1523let b: Set<string> = new Set('1'); 1524let ref3 = AppStorage.setAndRef('SetB', b); 1525ref3.set(b); 1526let c: Date = new Date('2024'); 1527let ref4 = AppStorage.setAndRef('DateC', c); 1528ref4.set(c); 1529ref2.set(null); 1530ref3.set(undefined); 1531``` 1532 1533### info<sup>12+</sup> 1534 1535info(): string 1536 1537读取[AppStorage](../../../ui/state-management/arkts-appstorage.md)/[LocalStorage](../../../ui/state-management/arkts-localstorage.md)中所引用属性的属性名。 1538 1539**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1540 1541**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1542 1543**返回值:** 1544 1545| 类型 | 说明 | 1546| ------ | --------------------------------------------- | 1547| string | AppStorage/LocalStorage中所引用属性的属性名。 | 1548 1549**示例:** 1550 1551```ts 1552AppStorage.setOrCreate('PropA', 47); 1553let ref1: AbstractProperty<number> | undefined = AppStorage.ref('PropA'); 1554ref1?.info(); // ref1.info()='PropA' 1555``` 1556 1557## SubscribedAbstractProperty 1558 1559**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 1560 1561**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1562 1563**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1564 1565### get<sup>9+</sup> 1566 1567abstract get(): T 1568 1569读取从[AppStorage](../../../ui/state-management/arkts-appstorage.md)/[LocalStorage](../../../ui/state-management/arkts-localstorage.md)同步属性的数据。 1570 1571**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 1572 1573**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1574 1575**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1576 1577**返回值:** 1578 1579| 类型 | 说明 | 1580| ---- | ------------------------------- | 1581| T | AppStorage/LocalStorage同步属性的数据。 | 1582 1583**示例:** 1584```ts 1585AppStorage.setOrCreate('PropA', 47); 1586let prop1: SubscribedAbstractProperty<number> = AppStorage.prop('PropA'); 1587prop1.get(); // prop1.get()=47 1588``` 1589 1590 1591### set<sup>9+</sup> 1592 1593abstract set(newValue: T): void 1594 1595设置[AppStorage](../../../ui/state-management/arkts-appstorage.md)/[LocalStorage](../../../ui/state-management/arkts-localstorage.md)同步属性的数据,newValue必须是T类型,从API version 12开始可以为null或undefined。 1596 1597> **说明:** 1598> 1599>从API version 12开始,AppStorage/LocalStorage支持Map、Set、Date类型,支持null、undefined以及联合类型。 1600 1601**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 1602 1603**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1604 1605**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1606 1607 1608**参数:** 1609 1610 1611| 参数名 | 类型 | 必填 | 说明 | 1612| -------- | ---- | ---- | --------------------------------------------------------- | 1613| newValue | T | 是 | 要设置的数据,从API version 12开始可以为null或undefined。 | 1614 1615 1616**示例:** 1617```ts 1618AppStorage.setOrCreate('PropA', 47); 1619let prop1: SubscribedAbstractProperty<number> = AppStorage.prop('PropA'); 1620prop1.set(1); // prop1.get()=1 1621// 从API12开始支持Map、Set、Date类型,支持null、undefined以及联合类型。 1622let a: Map<string, number> = new Map([['1', 0]]); 1623let prop2 = AppStorage.setAndProp('MapA', a); 1624prop2.set(a); 1625let b: Set<string> = new Set('1'); 1626let prop3 = AppStorage.setAndProp('SetB', b); 1627prop3.set(b); 1628let c: Date = new Date('2024'); 1629let prop4 = AppStorage.setAndProp('DateC', c); 1630prop4.set(c); 1631prop2.set(null); 1632prop3.set(undefined); 1633``` 1634 1635### aboutToBeDeleted<sup>10+</sup> 1636 1637abstract aboutToBeDeleted(): void 1638 1639取消[SubscribedAbstractProperty](#subscribedabstractproperty)实例对[AppStorage](../../../ui/state-management/arkts-appstorage.md)/[LocalStorage](../../../ui/state-management/arkts-localstorage.md)的单/双向同步关系,并无效化SubscribedAbstractProperty实例,即当调用aboutToBeDeleted方法之后不能再使用SubscribedAbstractProperty实例调用[set](#set9-1)或[get](#get9-1)方法。 1640 1641**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1642 1643**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1644 1645**示例:** 1646```ts 1647AppStorage.setOrCreate('PropA', 47); 1648let link = AppStorage.setAndLink('PropB', 49); // PropA -> 47, PropB -> 49 1649link.aboutToBeDeleted(); 1650``` 1651 1652### info 1653 1654info(): string; 1655 1656返回属性名称。 1657 1658**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1659 1660**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1661 1662**返回值:** 1663 1664|类型 |说明 | 1665|---------|-------------| 1666|string |属性名称。 | 1667 1668 1669## PersistentStorage 1670 1671**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1672 1673**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1674 1675PersistentStorage具体UI使用说明,详见[PersistentStorage(持久化存储UI状态)](../../../ui/state-management/arkts-persiststorage.md) 1676 1677> **说明:**<br/> 1678> 从API version 12开始,PersistentStorage支持null、undefined。 1679 1680### PersistPropsOptions 1681 1682**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1683 1684**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1685 1686**参数:** 1687 1688| 参数名 | 类型 | 必填 | 说明 | 1689| ------------ | ------------------------------------- | ---- | ------------------------------------------------------------ | 1690| key | string | 是 | 属性名。 | 1691| defaultValue | number \| string \| boolean \| Object | 是 | 在PersistentStorage和AppStorage未查询到时,则使用默认值初始化它。从API version 12开始,defaultValue允许为null或undefined。 | 1692 1693 1694### persistProp<sup>10+</sup> 1695 1696static persistProp<T>(key: string, defaultValue: T): void 1697 1698将[AppStorage](../../../ui/state-management/arkts-appstorage.md)中key对应的属性持久化到文件中。该接口的调用通常在访问AppStorage之前。 1699 1700确定属性的类型和值的顺序如下: 1701 17021. 如果[PersistentStorage](../../../ui/state-management/arkts-persiststorage.md)文件中存在key对应的属性,在AppStorage中创建对应的propName,并用在PersistentStorage中找到的key的属性初始化。 1703 17042. 如果PersistentStorage文件中没有查询到key对应的属性,则在AppStorage中查找key对应的属性。如果找到key对应的属性,则将该属性持久化。 1705 17063. 如果AppStorage中也没查找到key对应的属性,则在AppStorage中创建key对应的属性。用defaultValue初始化其值,并将该属性持久化。 1707 1708根据上述的初始化流程,如果AppStorage中有该属性,则会使用其值,覆盖掉PersistentStorage文件中的值。由于AppStorage是内存内数据,该行为会导致数据丧失持久化能力。 1709 1710**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1711 1712**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1713 1714**参数:** 1715 1716| 参数名 | 类型 | 必填 | 说明 | 1717| ------------ | ------ | ---- | ------------------------------------------------------------ | 1718| key | string | 是 | 属性名。 | 1719| defaultValue | T | 是 | 在PersistentStorage和AppStorage中未查询到时,则使用默认值进行初始化。从API version 12开始允许为null或undefined。 | 1720 1721 1722**示例:** 1723 1724 1725persistProp具体使用,见[从AppStorage中访问PersistentStorage初始化的属性](../../../ui/state-management/arkts-persiststorage.md#从appstorage中访问persistentstorage初始化的属性) 1726 1727 1728### deleteProp<sup>10+</sup> 1729 1730static deleteProp(key: string): void 1731 1732[persistProp](#persistprop10)的逆向操作。将key对应的属性从PersistentStorage中删除,后续[AppStorage](../../../ui/state-management/arkts-appstorage.md)的操作,对[PersistentStorage](../../../ui/state-management/arkts-persiststorage.md)不会再有影响。该操作会将对应的key从持久化文件中删除,如果希望再次持久化,可以再次调用[persistProp](#persistprop10)接口。 1733 1734**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1735 1736**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1737 1738**参数:** 1739 1740| 参数名 | 类型 | 必填 | 说明 | 1741| ---- | ------ | ---- | ----------------------- | 1742| key | string | 是 | PersistentStorage中的属性名。 | 1743 1744**示例:** 1745```ts 1746PersistentStorage.deleteProp('highScore'); 1747``` 1748 1749 1750### persistProps<sup>10+</sup> 1751 1752static persistProps(props: PersistPropsOptions[]): void 1753 1754行为和[persistProp](#persistprop10)类似,不同在于可以一次性持久化多个数据,适合在应用启动的时候初始化。 1755 1756**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1757 1758**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1759 1760**参数:** 1761 1762| 参数名 | 类型 | 必填 | 说明 | 1763| ---------- | ---------------------------------------- | ---- | ---------------------------------------- | 1764| props | [PersistPropsOptions](#persistpropsoptions)[] | 是 | 持久化数组。 | 1765 1766**示例:** 1767```ts 1768PersistentStorage.persistProps([{ key: 'highScore', defaultValue: '0' }, { key: 'wightScore', defaultValue: '1' }]); 1769``` 1770 1771 1772### keys<sup>10+</sup> 1773 1774static keys(): Array<string> 1775 1776返回所有持久化属性的属性名的数组。 1777 1778**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1779 1780**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1781 1782**返回值:** 1783 1784| 类型 | 说明 | 1785| ------------------- | ---------------------------------- | 1786| Array<string> | 返回所有持久化属性的属性名的数组。 | 1787 1788**示例:** 1789```ts 1790let keys: Array<string> = PersistentStorage.keys(); 1791``` 1792 1793 1794### PersistProp<sup>(deprecated)</sup> 1795 1796static PersistProp<T>(key: string, defaultValue: T): void 1797 1798将[AppStorage](../../../ui/state-management/arkts-appstorage.md)中key对应的属性持久化到文件中。该接口的调用通常在访问AppStorage之前。 1799 1800确定属性的类型和值的顺序如下: 1801 18021. 如果[PersistentStorage](../../../ui/state-management/arkts-persiststorage.md)文件中存在key对应的属性,在AppStorage中创建对应的propName,并用在PersistentStorage中找到的key的属性初始化。 1803 18042. 如果PersistentStorage文件中没有查询到key对应的属性,则在AppStorage中查找key对应的属性。如果找到key对应的属性,则将该属性持久化。 1805 18063. 如果AppStorage也没查找到key对应的属性,则在AppStorage中创建key对应的属性。用defaultValue初始化其值,并将该属性持久化。 1807 1808根据上述的初始化流程,如果AppStorage中有该属性,则会使用其值,覆盖掉PersistentStorage文件中的值。由于AppStorage是内存内数据,该行为会导致数据丧失持久化能力。 1809 1810 1811> **说明:**<br/> 1812> 从API version 10开始废弃,推荐使用[persistProp10+](#persistprop10)替代。 1813 1814**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1815 1816**参数:** 1817 1818| 参数名 | 类型 | 必填 | 说明 | 1819| ------------ | ------ | ---- | ------------------------------------------------------------ | 1820| key | string | 是 | 属性名。 | 1821| defaultValue | T | 是 | 在PersistentStorage和AppStorage中未查询到时,则使用默认值进行初始化。不允许为null或undefined。 | 1822 1823 1824**示例:** 1825 1826 1827```ts 1828PersistentStorage.PersistProp('highScore', '0'); 1829``` 1830 1831 1832### DeleteProp<sup>(deprecated)</sup> 1833 1834static DeleteProp(key: string): void 1835 1836[PersistProp](#persistpropdeprecated)的逆向操作。将key对应的属性从[PersistentStorage](../../../ui/state-management/arkts-persiststorage.md)中删除,后续[AppStorage](../../../ui/state-management/arkts-appstorage.md)的操作,对PersistentStorage不会再有影响。 1837 1838 1839> **说明:**<br/> 1840> 从API version 10开始废弃,推荐使用[deleteProp10+](#deleteprop10)替代。 1841 1842**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1843 1844**参数:** 1845 1846| 参数名 | 类型 | 必填 | 说明 | 1847| ---- | ------ | ---- | ----------------------- | 1848| key | string | 是 | PersistentStorage中的属性名。 | 1849 1850**示例:** 1851```ts 1852PersistentStorage.DeleteProp('highScore'); 1853``` 1854 1855 1856### PersistProps<sup>(deprecated)</sup> 1857 1858static PersistProps(properties: {key: string, defaultValue: any;}[]): void 1859 1860行为和[PersistProp](#persistpropdeprecated)类似,不同在于可以一次性持久化多个数据,适合在应用启动的时候初始化。 1861 1862> **说明:**<br/> 1863> 从API version 10开始废弃,推荐使用[persistProps10+](#persistprops10)替代。 1864 1865**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1866 1867**参数:** 1868 1869| 参数名 | 类型 | 必填 | 说明 | 1870| ---------- | ---------------------------------- | ---- | ------------------------------------------------------------ | 1871| properties | {key: string, defaultValue: any}[] | 是 | 持久化数组,启动key为属性名,defaultValue为默认值。规则同PersistProp。 | 1872 1873**示例:** 1874 1875```ts 1876PersistentStorage.PersistProps([{ key: 'highScore', defaultValue: '0' }, { key: 'wightScore', defaultValue: '1' }]); 1877``` 1878 1879 1880### Keys<sup>(deprecated)</sup> 1881 1882static Keys(): Array<string> 1883 1884返回所有持久化属性的属性名的数组。 1885 1886> **说明:**<br/> 1887> 从API version 10开始废弃,推荐使用[keys10+](#keys10-1)替代。 1888 1889**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1890 1891**返回值:** 1892 1893| 类型 | 说明 | 1894| ------------------- | ---------------------------------- | 1895| Array<string> | 返回所有持久化属性的属性名的数组。 | 1896 1897**示例:** 1898```ts 1899let keys: Array<string> = PersistentStorage.Keys(); 1900``` 1901 1902 1903## Environment 1904 1905**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1906 1907**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1908 1909Environment具体使用说明,详见[Environment(设备环境查询)](../../../ui/state-management/arkts-environment.md) 1910 1911### EnvPropsOptions 1912 1913**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1914 1915**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1916 1917**参数:** 1918 1919| 参数名 | 类型 | 必填 | 说明 | 1920| ------------ | --------------------------- | ---- | ------------------------------------------------------------ | 1921| key | string | 是 | 环境变量名称,支持的范围详见[内置环境变量说明](#内置环境变量说明)。 | 1922| defaultValue | number \| string \| boolean | 是 | 查询不到环境变量key,则使用defaultValue作为默认值存入AppStorage中。 | 1923 1924 1925### envProp<sup>10+</sup> 1926 1927static envProp<S>(key: string, value: S): boolean 1928 1929将[Environment](../../../ui/state-management/arkts-environment.md)的内置环境变量key存入[AppStorage](../../../ui/state-management/arkts-appstorage.md)中。如果系统中未查询到Environment环境变量key的值,则使用默认值value,存入成功,返回true。如果AppStorage中已经有对应的key,则返回false。 1930 1931所以建议在程序启动的时候调用该接口。 1932 1933在没有调用envProp的情况下,就使用AppStorage读取环境变量是错误的。 1934 1935**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1936 1937**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1938 1939**参数:** 1940 1941| 参数名 | 类型 | 必填 | 说明 | 1942| ------ | ------ | ---- | ------------------------------------------------------------ | 1943| key | string | 是 | 环境变量名称,支持的范围详见[内置环境变量说明](#内置环境变量说明)。 | 1944| value | S | 是 | 查询不到环境变量key时,则使用value作为默认值存入AppStorage中。 | 1945 1946**返回值:** 1947 1948| 类型 | 说明 | 1949| ------- | ------------------------------------------------------------ | 1950| boolean | 如果key对应的属性在AppStorage中存在,则返回false。不存在则在AppStorage中用value作为默认值创建key对应的属性,返回true。 | 1951 1952**示例:** 1953 1954 1955envProp具体使用,见[从UI中访问Environment参数](../../../ui/state-management/arkts-environment.md#从ui中访问environment参数) 1956 1957 1958### envProps<sup>10+</sup> 1959 1960static envProps(props: EnvPropsOptions[]): void 1961 1962和[envProp](#envprop10)类似,不同点在于参数为数组,可以一次性初始化多个数据。建议在应用启动时调用,将系统环境变量批量存入[AppStorage](../../../ui/state-management/arkts-appstorage.md)中。 1963 1964**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1965 1966**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1967 1968**参数:** 1969 1970| 参数名 | 类型 | 必填 | 说明 | 1971| ------ | --------------------------------------------- | ---- | ------------------------------------ | 1972| props | [EnvPropsOptions](#envpropsoptions)[] | 是 | 系统环境变量和默认值的键值对的数组。 | 1973 1974**示例:** 1975```ts 1976Environment.envProps([{ key: 'accessibilityEnabled', defaultValue: 'default' }, { 1977 key: 'languageCode', 1978 defaultValue: 'en' 1979}, { key: 'prop', defaultValue: 'hhhh' }]); 1980``` 1981 1982 1983### keys<sup>10+</sup> 1984 1985static keys(): Array<string> 1986 1987返回环境变量的属性key的数组。 1988 1989**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1990 1991**系统能力:** SystemCapability.ArkUI.ArkUI.Full 1992 1993**返回值:** 1994 1995| 类型 | 说明 | 1996| ------------------- | ----------- | 1997| Array<string> | 返回关联的系统项数组。 | 1998 1999**示例:** 2000```ts 2001Environment.envProps([{ key: 'accessibilityEnabled', defaultValue: 'default' }, { 2002 key: 'languageCode', 2003 defaultValue: 'en' 2004}, { key: 'prop', defaultValue: 'hhhh' }]); 2005 2006let keys: Array<string> = Environment.keys(); // keys 包含 accessibilityEnabled,languageCode,prop 2007``` 2008 2009 2010### EnvProp<sup>(deprecated)</sup> 2011 2012static EnvProp<S>(key: string, value: S): boolean 2013 2014将[Environment](../../../ui/state-management/arkts-environment.md)的内置环境变量key存入[AppStorage](../../../ui/state-management/arkts-appstorage.md)中。如果系统中未查询到Environment环境变量key的值,则使用默认值value,存入成功,返回true。如果AppStorage中已经有对应的key,则返回false。 2015 2016所以建议在程序启动的时候调用该接口。 2017 2018在没有调用EnvProp的情况下,就使用AppStorage读取环境变量是错误的。 2019 2020> **说明:**<br/> 2021> 从API version 10开始废弃,推荐使用[envProp10+](#envprop10)替代。 2022 2023**系统能力:** SystemCapability.ArkUI.ArkUI.Full 2024 2025**参数:** 2026 2027| 参数名 | 类型 | 必填 | 说明 | 2028| ------ | ------ | ---- | ------------------------------------------------------------ | 2029| key | string | 是 | 环境变量名称,支持的范围详见[内置环境变量说明](#内置环境变量说明)。 | 2030| value | S | 是 | 查询不到环境变量key,则使用value作为默认值存入AppStorage中。 | 2031 2032**返回值:** 2033 2034| 类型 | 说明 | 2035| ------- | ------------------------------------------------------------ | 2036| boolean | 如果key对应的属性在AppStorage中存在,则返回false。不存在则在AppStorage中用value作为默认值创建key对应的属性,返回true。 | 2037 2038**示例:** 2039 2040 2041```ts 2042Environment.EnvProp('accessibilityEnabled', 'default'); 2043``` 2044 2045 2046### EnvProps<sup>(deprecated)</sup> 2047 2048static EnvProps(props: {key: string; defaultValue: any;}[]): void 2049 2050和[EnvProp](#envpropdeprecated)类似,不同点在于参数为数组,可以一次性初始化多个数据。建议在应用启动时调用,将系统环境变量批量存入[AppStorage](../../../ui/state-management/arkts-appstorage.md)中。 2051 2052> **说明:**<br/> 2053> 从API version 10开始废弃,推荐使用[envProps10+](#envprops10)替代。 2054 2055**系统能力:** SystemCapability.ArkUI.ArkUI.Full 2056 2057**参数:** 2058 2059| 参数名 | 类型 | 必填 | 说明 | 2060| ------ | ------------------------------------------------- | ---- | ------------------------------------ | 2061| props | {key: string, defaultValue: any}[] | 是 | 系统环境变量和默认值的键值对的数组。 | 2062 2063**示例:** 2064```ts 2065Environment.EnvProps([{ key: 'accessibilityEnabled', defaultValue: 'default' }, { 2066 key: 'languageCode', 2067 defaultValue: 'en' 2068}, { key: 'prop', defaultValue: 'hhhh' }]); 2069``` 2070 2071 2072### Keys<sup>(deprecated)</sup> 2073 2074static Keys(): Array<string> 2075 2076返回环境变量的属性key的数组。 2077 2078> **说明:**<br/> 2079> 从API version 10开始废弃,推荐使用[keys10+](#keys10-2)替代。 2080 2081**系统能力:** SystemCapability.ArkUI.ArkUI.Full 2082 2083**返回值:** 2084 2085| 类型 | 说明 | 2086| ------------------- | ----------- | 2087| Array<string> | 返回关联的系统项数组。 | 2088 2089**示例:** 2090 2091```ts 2092Environment.EnvProps([{ key: 'accessibilityEnabled', defaultValue: 'default' }, { 2093 key: 'languageCode', 2094 defaultValue: 'en' 2095}, { key: 'prop', defaultValue: 'hhhh' }]); 2096 2097let keys: Array<string> = Environment.Keys(); // keys 包含 accessibilityEnabled,languageCode,prop 2098``` 2099 2100 2101## 内置环境变量说明 2102 2103| key | 类型 | 说明 | 2104| -------------------- | --------------- | ------------------------------------------------------------ | 2105| accessibilityEnabled | string | 无障碍屏幕朗读是否启用。当无法获取环境变量中的accessibilityEnabled的值时,将通过envProp、envProps等接口传入的开发者指定的默认值添加到AppStorage中。 | 2106| colorMode | ColorMode | 深浅色模式,可选值为:<br/>- ColorMode.LIGHT:浅色模式;<br/>- ColorMode.DARK:深色模式。 | 2107| fontScale | number | 字体大小比例。 | 2108| fontWeightScale | number | 字重比例。 | 2109| layoutDirection | LayoutDirection | 布局方向类型,可选值为:<br/>- LayoutDirection.LTR:从左到右;<br/>- LayoutDirection.RTL:从右到左。<br/>- Auto:跟随系统。 | 2110| languageCode | string | 当前系统语言,小写字母,例如zh。 | 2111