# @ohos.arkui.StateManagement (状æ€ç®¡ç†) 状æ€ç®¡ç†æ¨¡å—æä¾›äº†åº”用程åºçš„æ•°æ®å˜å‚¨èƒ½åŠ›ã€æŒä¹…化数æ®ç®¡ç†èƒ½åŠ›ã€UIAbilityæ•°æ®å˜å‚¨èƒ½åŠ›å’Œåº”ç”¨ç¨‹åºéœ€è¦çš„环境状æ€ã€å·¥å…·ã€‚ >**说明:** > >本模å—首批接å£ä»ŽAPI version 12开始支æŒï¼ŒåŽç»ç‰ˆæœ¬çš„æ–°å¢žæŽ¥å£ï¼Œé‡‡ç”¨ä¸Šè§’æ ‡å•ç‹¬æ ‡è®°æŽ¥å£çš„起始版本。 本文ä¸Tå’ŒSçš„å«ä¹‰å¦‚下: | 类型 | 说明 | | ---- | -------------------------------------- | | T | Class,number,boolean,string和这些类型的数组形å¼ã€‚ | | S | number,boolean,string。 | ## å¯¼å…¥æ¨¡å— ```ts import { AppStorageV2,PersistenceV2,UIUtils} from '@kit.ArkUI'; ``` ## AppStorageV2 AppStorageV2具体UI使用说明,详è§[AppStorageV2(应用全局的UI状æ€å˜å‚¨)](../../quick-start/arkts-new-appstoragev2.md)。 **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full ### connect static connect\<T extends object\>( </br > type: TypeConstructorWithArgs\<T\>, </br > keyOrDefaultCreator?: string | StorageDefaultCreator\<T\>, </br > defaultCreator?: StorageDefaultCreator\<T\> </br > ): T | undefined; 将键值对数æ®å‚¨å˜åœ¨åº”用内å˜ä¸ã€‚如果给定的keyå·²ç»å˜åœ¨äºŽ[AppStorageV2](../../quick-start/arkts-new-appstoragev2.md)ä¸ï¼Œè¿”回对应的值;å¦åˆ™ï¼Œé€šè¿‡èŽ·å–é»˜è®¤å€¼çš„æž„é€ å™¨æž„é€ é»˜è®¤å€¼ï¼Œå¹¶è¿”å›žã€‚ **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ------ | ---- | ---------------------- | | type | [TypeConstructorWithArgs\<T\>](#typeconstructorwithargst) | 是 | 指定的类型,若未指定key,则使用typeçš„name作为key。 | | keyOrDefaultCreator | string \| [StorageDefaultCreator\<T\>](#storagedefaultcreatort) | å¦ | 指定的key,或者是获å–é»˜è®¤å€¼çš„æž„é€ å™¨ã€‚ | | defaultCreator | StorageDefaultCreator\<T\> | å¦ | 获å–é»˜è®¤å€¼çš„æž„é€ å™¨ã€‚ | >**说明:** > >1ã€è‹¥æœªæŒ‡å®škeyï¼Œä½¿ç”¨ç¬¬äºŒä¸ªå‚æ•°ä½œä¸ºé»˜è®¤æž„é€ å™¨ï¼›å¦åˆ™ä½¿ç”¨ç¬¬ä¸‰ä¸ªå‚æ•°ä½œä¸ºé»˜è®¤æž„é€ å™¨ï¼› > >2ã€ç¡®ä¿æ•°æ®å·²ç»å˜å‚¨åœ¨AppStorageV2ä¸ï¼Œå¯çœç•¥é»˜è®¤æž„é€ å™¨ï¼ŒèŽ·å–å˜å‚¨çš„æ•°æ®ï¼›å¦åˆ™å¿…é¡»æŒ‡å®šé»˜è®¤æž„é€ å™¨ï¼Œä¸æŒ‡å®šå°†å¯¼è‡´åº”用异常; > >3ã€åŒä¸€ä¸ªkey,connectä¸åŒç±»åž‹çš„æ•°æ®ä¼šå¯¼è‡´åº”用异常,应用需è¦ç¡®ä¿ç±»åž‹åŒ¹é…ï¼› > >4ã€key建议使用有æ„义的值,长度ä¸è¶…过255ï¼Œä½¿ç”¨éžæ³•å—符或空å—符的行为是未定义的。 **返回值:** | 类型 | 说明 | | -------------------------------------- | ------------------------------------------------------------ | | T | 创建或获å–AppStorageV2æ•°æ®æˆåŠŸæ—¶ï¼Œè¿”å›žæ•°æ®ï¼›å¦åˆ™è¿”回undefined。 | **示例:** ```ts import { AppStorageV2 } from '@kit.ArkUI'; @ObservedV2 class SampleClass { @Trace p: number = 0; } // å°†key为SampleClassã€value为new SampleClass()对象的键值对å˜å‚¨åˆ°å†…å˜ä¸ï¼Œå¹¶èµ‹å€¼ç»™as1 const as1: SampleClass | undefined = AppStorageV2.connect(SampleClass, () => new SampleClass()); // å°†key为key_as2ã€value为new SampleClass()对象的键值对å˜å‚¨åˆ°å†…å˜ä¸ï¼Œå¹¶èµ‹å€¼ç»™as2 const as2: SampleClass = AppStorageV2.connect(SampleClass, 'key_as2', () => new SampleClass())!; // key为SampleClasså·²ç»åœ¨AppStorageV2ä¸ï¼Œå°†key为SampleClass的值返回给as3 const as3: SampleClass = AppStorageV2.connect(SampleClass) as SampleClass; ``` ### remove static remove\<T\>(keyOrType: string | TypeConstructorWithArgs\<T\>): void; 将指定的键值对数æ®ä»Ž[AppStorageV2](../../quick-start/arkts-new-appstoragev2.md)里é¢åˆ 除。如果指定的键值ä¸å˜åœ¨äºŽAppStorageV2ä¸ï¼Œå°†åˆ 除失败。 **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ------ | ---- | ---------------------- | | keyOrType | string \| TypeConstructorWithArgs\<T\> | 是 | 需è¦åˆ 除的key;如果指定的是typeç±»åž‹ï¼Œåˆ é™¤çš„key为typeçš„name。 | >**说明:** > >åˆ é™¤AppStorageV2ä¸ä¸å˜åœ¨çš„key会报è¦å‘Šã€‚ **示例:** <!--code_no_check--> ```ts // å‡è®¾AppStorageV2ä¸å˜åœ¨key为key_as2的键,从AppStorageV2ä¸åˆ é™¤è¯¥é”®å€¼å¯¹æ•°æ® AppStorageV2.remove('key_as2'); // å‡è®¾AppStorageV2ä¸å˜åœ¨key为SampleClass的键,从AppStorageV2ä¸åˆ é™¤è¯¥é”®å€¼å¯¹æ•°æ® AppStorageV2.remove(SampleClass); // å‡è®¾AppStorageV2ä¸ä¸å˜åœ¨key为key_as1的键,报è¦å‘Š AppStorageV2.remove('key_as1'); ``` ### keys static keys(): Array\<string\>; 获å–[AppStorageV2](../../quick-start/arkts-new-appstoragev2.md)ä¸çš„æ‰€æœ‰key。 **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full **返回值:** | 类型 | 说明 | | -------------------------------------- | ------------------------------------------------------------ | | Array\<string\> | 所有AppStorageV2ä¸çš„key。 | >**说明:** > >key在Arrayä¸çš„é¡ºåºæ˜¯æ— åºçš„,与keyæ’入到AppStorageV2ä¸çš„é¡ºåºæ— 关。 **示例:** ```ts // å‡è®¾AppStorageV2ä¸å˜åœ¨ä¸¤ä¸ªkey(key_as1ã€key_as2),返回[key_as1ã€key_as2]赋值给keys const keys: Array<string> = AppStorageV2.keys(); ``` ## PersistenceV2 继承自[AppStorageV2](#appstoragev2),PersistenceV2具体UI使用说明,详è§[PersistenceV2(æŒä¹…化å˜å‚¨UI状æ€)](../../quick-start/arkts-new-persistencev2.md)。 **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full ### save static save\<T\>(keyOrType: string | TypeConstructorWithArgs\<T\>): void; å°†æŒ‡å®šçš„é”®å€¼å¯¹æ•°æ®æŒä¹…化一次。 **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ------ | ---- | ---------------------- | | keyOrType | string \| TypeConstructorWithArgs\<T\> | 是 | éœ€è¦æŒä¹…化的key;如果指定的是type类型,æŒä¹…化的key为typeçš„name。 | >**说明:** > >由于éž[\@Trace](../../quick-start/arkts-new-observedV2-and-trace.md)çš„æ•°æ®æ”¹å˜ä¸ä¼šè§¦å‘[PersistenceV2](../../quick-start/arkts-new-persistencev2.md)的自动æŒä¹…化,如有必è¦ï¼Œå¯è°ƒç”¨è¯¥æŽ¥å£æŒä¹…化对应key的数æ®ï¼› > >手动æŒä¹…化当å‰å†…å˜ä¸ä¸å¤„于connect状æ€çš„keyæ˜¯æ— æ„义的。 **示例:** <!--code_no_check--> ```ts // å‡è®¾PersistenceV2ä¸å˜åœ¨key为key_as2的键,æŒä¹…åŒ–è¯¥é”®å€¼å¯¹æ•°æ® PersistenceV2.save('key_as2'); // å‡è®¾PersistenceV2ä¸å˜åœ¨key为SampleClass的键,æŒä¹…åŒ–è¯¥é”®å€¼å¯¹æ•°æ® PersistenceV2.remove(SampleClass); // å‡è®¾PersistenceV2ä¸ä¸å˜åœ¨key为key_as1çš„é”®ï¼Œæ— æ„义的æ“作 PersistenceV2.remove('key_as1'); ``` ### notifyOnError static notifyOnError(callback: PersistenceErrorCallback | undefined): void; 在æŒä¹…化失败时调用。 **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | -------- | ------ | ---- | ---------------------- | | callback | PersistenceErrorCallback \| undefined | 是 | æŒä¹…化失败时调用。 | **示例:** ```ts // æŒä¹…化失败时调用 PersistenceV2.notifyOnError((key: string, reason: string, msg: string) => { console.error(`error key: ${key}, reason: ${reason}, message: ${msg}`); }); ``` ## UIUtils UIUtilsæä¾›ä¸€äº›æ–¹æ³•,用于处ç†çжæ€ç®¡ç†ç›¸å…³çš„æ•°æ®è½¬æ¢ã€‚ **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full ### getTarget static getTarget\<T extends object\>(source: T): T; 从状æ€ç®¡ç†æ¡†æž¶åŒ…裹的代ç†å¯¹è±¡ä¸èŽ·å–原始对象。详è§[getTarget接å£ï¼šèŽ·å–状æ€ç®¡ç†æ¡†æž¶ä»£ç†å‰çš„原始对象](../../quick-start/arkts-new-getTarget.md)。 **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------ | ---- | ---- | ------------ | | source | T | 是 | æ•°æ®æºå¯¹è±¡ã€‚ | **返回值:** | 类型 | 说明 | | ---- | ------------------------------------------------ | | T | æ•°æ®æºå¯¹è±¡åŽ»é™¤çŠ¶æ€ç®¡ç†æ¡†æž¶æ‰€åР代ç†åŽçš„原始对象。 | **示例:** ```ts import { UIUtils } from '@kit.ArkUI'; class NonObservedClass { name: string = "Tom"; } let nonObservedClass: NonObservedClass = new NonObservedClass(); @Entry @Component struct Index { @State someClass: NonObservedClass = nonObservedClass; build() { Column() { Text(`this.someClass === nonObservedClass: ${this.someClass === nonObservedClass}`) // false Text(`UIUtils.getTarget(this.someClass) === nonObservedClass: ${UIUtils.getTarget(this.someClass) === nonObservedClass}`) // true } } } ``` ### makeObserved static makeObserved\<T extends object\>(source: T): T; 将普通ä¸å¯è§‚察数æ®å˜ä¸ºå¯è§‚察数æ®ã€‚详è§[makeObserved接å£ï¼šå°†éžè§‚察数æ®å˜ä¸ºå¯è§‚察数æ®](../../quick-start/arkts-new-makeObserved.md)。 **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------ | ---- | ---- | ------------ | | source | T | 是 | æ•°æ®æºå¯¹è±¡ã€‚支æŒéž@Observedå’Œ@ObserveV2修饰的class,JSON.parse返回的Objectå’Œ@Sendable修饰的class。</br>支æŒArrayã€Mapã€Setå’ŒDate。</br>支æŒcollection.Array, collection.Setå’Œcollection.Map。</br>具体使用规则,详è§[makeObserved接å£ï¼šå°†éžè§‚察数æ®å˜ä¸ºå¯è§‚察数æ®](../../quick-start/arkts-new-makeObserved.md)。 | **返回值:** | 类型 | 说明 | | ---- | ------------------------------------------------ | | T | å¯è§‚察的数æ®ã€‚ | **示例:** ```ts import { UIUtils } from '@kit.ArkUI'; class NonObservedClass { name: string = 'Tom'; } @Entry @ComponentV2 struct Index { observedClass: NonObservedClass = UIUtils.makeObserved(new NonObservedClass()); nonObservedClass: NonObservedClass = new NonObservedClass(); build() { Column() { Text(`observedClass: ${this.observedClass.name}`) .onClick(() => { this.observedClass.name = 'Jane'; // 刷新 }) Text(`observedClass: ${this.nonObservedClass.name}`) .onClick(() => { this.nonObservedClass.name = 'Jane'; // ä¸åˆ·æ–° }) } } } ``` ## StorageDefaultCreator\<T\> type StorageDefaultCreator\<T\> = () => T; è¿”å›žé»˜è®¤æž„é€ å™¨çš„å‡½æ•°ã€‚ **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full **返回值:** | 类型 | 说明 | | ---- | ------------------------------------------------ | | () => T | è¿”å›žé»˜è®¤æž„é€ å™¨çš„å‡½æ•°ã€‚ | **示例:** ```ts import { PersistenceV2 } from '@kit.ArkUI'; @ObservedV2 class SampleClass { @Trace id: number = 0; count: number = 1; } @ObservedV2 class FatherSampleClass { @Trace sampleClass: SampleClass = new SampleClass(); } // å°†key为SampleClassã€value为new SampleClass()对象的键值对æŒä¹…化,并赋值给source // StorageDefaultCreator 指的是 () => new FatherSampleClass() const source: FatherSampleClass | undefined = PersistenceV2.connect(FatherSampleClass, () => new FatherSampleClass()); @Entry @Component struct SampleComp { data: FatherSampleClass | undefined = source; build() { Column() { Text(`${this.data?.sampleClass.id}`) } } } ``` ## TypeConstructorWithArgs\<T\> 嫿œ‰ä»»æ„å…¥å‚çš„ç±»æž„é€ å™¨ã€‚ **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full ### new new(...args: any): T; **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------ | ---- | ---- | ------------ | | ...args | any | 是 | 函数入å‚。 | **返回值:** | 类型 | 说明 | | ---- | ------------------------------------------------ | | T | T类型的实例。 | **示例:** ```ts import { PersistenceV2 } from '@kit.ArkUI'; @ObservedV2 // TypeConstructorWithArgs 指的是 SampleClass class SampleClass { @Trace id: number = 0; count: number = 1; } @ObservedV2 class FatherSampleClass { @Trace sampleClass: SampleClass = new SampleClass(); } // å°†key为SampleClassã€value为new SampleClass()对象的键值对æŒä¹…化,并赋值给source const source: FatherSampleClass | undefined = PersistenceV2.connect(FatherSampleClass, () => new FatherSampleClass()); @Entry @Component struct SampleComp { data: FatherSampleClass | undefined = source; build() { Column() { Text(`${this.data?.sampleClass.id}`) } } } ``` ## PersistenceErrorCallback type PersistenceErrorCallback = (key: string, reason: 'quota' | 'serialization' | 'unknown', message: string) => void; æŒä¹…åŒ–å¤±è´¥æ—¶è¿”å›žé”™è¯¯åŽŸå› çš„å›žè°ƒã€‚ **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------ | ---- | ---- | ------------ | | key | string | 是 | 出错的键值。 | |reason| 'quota' \| 'serialization' \| 'unknown' | 是 | å‡ºé”™çš„åŽŸå› ç±»åž‹ã€‚ | | message | string | 是 | 出错的更多消æ¯ã€‚ | **示例:** ```ts import { PersistenceV2, Type } from '@kit.ArkUI'; @ObservedV2 class SampleChild { @Trace id: number = 0; count: number = 10; } @ObservedV2 export class Sample { // å¯¹äºŽå¤æ‚对象需è¦@Type修饰,确ä¿åºåˆ—化æˆåŠŸ @Type(SampleChild) @Trace sampleChild: SampleChild = new SampleChild(); } // 接å—åºåˆ—化失败的回调 // PersistenceErrorCallback 指的是 (key: string, reason: string, msg: string) => {console.error(`error key: ${key}, reason: ${reason}, message: ${msg}`);} PersistenceV2.notifyOnError((key: string, reason: string, msg: string) => { console.error(`error key: ${key}, reason: ${reason}, message: ${msg}`); }); @Entry @ComponentV2 struct Index { // 在PersistenceV2ä¸åˆ›å»ºä¸€ä¸ªkey为Sample的键值对(如果å˜åœ¨ï¼Œåˆ™è¿”回PersistenceV2ä¸çš„æ•°æ®ï¼‰ï¼Œå¹¶ä¸”å’Œdataå…³è” // å¯¹äºŽéœ€è¦æ¢connect对象的data属性,需è¦åŠ @Local修饰(ä¸å»ºè®®å¯¹å±žæ€§æ¢connect的对象) @Local data: Sample = PersistenceV2.connect(Sample, () => new Sample())!; pageStack: NavPathStack = new NavPathStack(); build() { Text(`Index add 1 to data.id: ${this.data.sampleChild.id}`) .fontSize(30) .onClick(() => { this.data.sampleChild.id++; }) } } ``` ## TypeConstructor\<T\> ç±»æž„é€ å‡½æ•°ã€‚ **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full ### new new(): T; **返回值:** | 类型 | 说明 | | ---- | ------------------------------------------------ | | T | T类型的实例。 | **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full **示例:** ```ts import { PersistenceV2, Type } from '@kit.ArkUI'; @ObservedV2 class SampleChild { @Trace id: number = 0; count: number = 10; } @ObservedV2 export class Sample { // å¯¹äºŽå¤æ‚对象需è¦@Type修饰,确ä¿åºåˆ—化æˆåŠŸ // TypeConstructor 指的是 SampleChild @Type(SampleChild) @Trace sampleChild: SampleChild = new SampleChild(); } @Entry @ComponentV2 struct Index { data: Sample = PersistenceV2.connect(Sample, () => new Sample())!; build() { Column() { Text(`Index add 1 to data.id: ${this.data.sampleChild.id}`) .fontSize(30) .onClick(() => { this.data.sampleChild.id++; }) } } } ``` ## TypeDecorator type TypeDecorator = \<T\>(type: TypeConstructor\<T\>) => PropertyDecorator; 属性装饰器。 **原å化æœåŠ¡API:** 从API version 12å¼€å§‹ï¼Œè¯¥æŽ¥å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full **傿•°ï¼š** | 傿•°å | 类型 | å¿…å¡« | 说明 | | ------ | ---- | ---- | ------------ | | type | [TypeConstructor\<T\>](#typeconstructort) | 是 | æ ‡è®°ç±»å±žæ€§çš„ç±»åž‹ã€‚ | **返回值:** | 类型 | 说明 | | ---- | ------------------------------------------------ | | PropertyDecorator | 属性装饰器。 | **示例:** ```ts import { PersistenceV2, Type } from '@kit.ArkUI'; @ObservedV2 class SampleChild { @Trace id: number = 0; count: number = 10; } @ObservedV2 export class Sample { // å¯¹äºŽå¤æ‚对象需è¦@Type修饰,确ä¿åºåˆ—化æˆåŠŸ // TypeDecorator 指的是 @Type @Type(SampleChild) @Trace sampleChild: SampleChild = new SampleChild(); } @Entry @ComponentV2 struct Index { data: Sample = PersistenceV2.connect(Sample, () => new Sample())!; build() { Column() { Text(`Index add 1 to data.id: ${this.data.sampleChild.id}`) .fontSize(30) .onClick(() => { this.data.sampleChild.id++; }) } } } ```