0
# Platform Integration
1
2
Components for integrating with platform-specific features including advertisements, payment systems, maps, canvas, and web views.
3
4
## Capabilities
5
6
### Map
7
8
Interactive map component with markers, overlays, and location services.
9
10
```typescript { .api }
11
/**
12
* Map display component with markers and overlays
13
* @supported weapp, alipay, swan, tt, qq, jd, h5, rn
14
*/
15
const Map: ComponentType<MapProps>;
16
17
interface MapProps extends StandardProps {
18
/** Map center longitude
19
* @supported weapp, alipay, swan, tt, qq, jd, h5, rn
20
*/
21
longitude?: number;
22
/** Map center latitude
23
* @supported weapp, alipay, swan, tt, qq, jd, h5, rn
24
*/
25
latitude?: number;
26
/** Map scale level
27
* @supported weapp, alipay, swan, tt, qq, jd, h5, rn
28
* @default 16
29
*/
30
scale?: number;
31
/** Map markers array
32
* @supported weapp, alipay, swan, tt, qq, jd, h5, rn
33
*/
34
markers?: MapMarker[];
35
/** Map polylines array
36
* @supported weapp, alipay, swan, tt, qq, jd, h5, rn
37
*/
38
polyline?: MapPolyline[];
39
/** Map circles array
40
* @supported weapp, alipay, swan, tt, qq, jd, h5, rn
41
*/
42
circles?: MapCircle[];
43
/** Map controls array
44
* @supported weapp, alipay, swan, tt, qq, jd, h5, rn
45
*/
46
controls?: MapControl[];
47
/** Map polygons array
48
* @supported weapp, alipay, swan, tt, qq, jd, h5, rn
49
*/
50
polygons?: MapPolygon[];
51
/** Whether to include POI points
52
* @supported weapp, alipay, swan, tt, qq, jd, h5, rn
53
* @default false
54
*/
55
includePoints?: MapIncludePoint[];
56
/** Whether to show location
57
* @supported weapp, alipay, swan, tt, qq, jd, h5, rn
58
* @default false
59
*/
60
showLocation?: boolean;
61
/** Map layer style
62
* @supported weapp, tt, qq, jd
63
* @default 1
64
*/
65
layerStyle?: number;
66
/** Whether to enable 3D
67
* @supported weapp, tt, qq, jd
68
* @default false
69
*/
70
enable3D?: boolean;
71
/** Whether to show compass
72
* @supported weapp, tt, qq, jd
73
* @default false
74
*/
75
showCompass?: boolean;
76
/** Whether to enable overview map
77
* @supported weapp, tt, qq, jd
78
* @default false
79
*/
80
enableOverlooking?: boolean;
81
/** Whether to enable rotation
82
* @supported weapp, tt, qq, jd
83
* @default false
84
*/
85
enableRotating?: boolean;
86
/** Whether to enable scroll
87
* @supported weapp, tt, qq, jd
88
* @default true
89
*/
90
enableScrolling?: boolean;
91
/** Whether to enable zoom
92
* @supported weapp, tt, qq, jd
93
* @default true
94
*/
95
enableZoom?: boolean;
96
/** Whether to enable POI click
97
* @supported weapp, tt, qq, jd
98
* @default false
99
*/
100
enablePoi?: boolean;
101
/** Whether to enable building display
102
* @supported weapp, tt, qq, jd
103
* @default false
104
*/
105
enableBuilding?: boolean;
106
/** Map tap callback */
107
onTap?: (event: MapTapEvent) => void;
108
/** Marker tap callback */
109
onMarkerTap?: (event: MapMarkerTapEvent) => void;
110
/** Label tap callback */
111
onLabelTap?: (event: MapLabelTapEvent) => void;
112
/** Control tap callback */
113
onControlTap?: (event: MapControlTapEvent) => void;
114
/** Callout tap callback */
115
onCalloutTap?: (event: MapCalloutTapEvent) => void;
116
/** Map region change callback */
117
onRegionChange?: (event: MapRegionChangeEvent) => void;
118
/** POI tap callback */
119
onPoiTap?: (event: MapPoiTapEvent) => void;
120
/** Map error callback */
121
onError?: (event: MapErrorEvent) => void;
122
}
123
```
124
125
### Canvas
126
127
HTML5 Canvas drawing component for custom graphics and animations.
128
129
```typescript { .api }
130
/**
131
* HTML5 Canvas drawing component
132
* @supported all platforms
133
*/
134
const Canvas: ComponentType<CanvasProps>;
135
136
interface CanvasProps extends StandardProps {
137
/** Canvas type
138
* @supported weapp, alipay, swan, tt, qq, jd, h5, rn
139
* @default "2d"
140
*/
141
type?: '2d' | 'webgl';
142
/** Canvas ID for referencing
143
* @supported weapp, alipay, swan, tt, qq, jd, h5, rn
144
*/
145
canvasId?: string;
146
/** Whether to disable scroll
147
* @supported weapp, alipay, swan, tt, qq, jd, h5
148
* @default false
149
*/
150
disableScroll?: boolean;
151
/** Canvas touch start callback */
152
onTouchStart?: (event: CanvasTouchEvent) => void;
153
/** Canvas touch move callback */
154
onTouchMove?: (event: CanvasTouchEvent) => void;
155
/** Canvas touch end callback */
156
onTouchEnd?: (event: CanvasTouchEvent) => void;
157
/** Canvas touch cancel callback */
158
onTouchCancel?: (event: CanvasTouchEvent) => void;
159
/** Canvas long tap callback */
160
onLongTap?: (event: CanvasTouchEvent) => void;
161
/** Canvas error callback */
162
onError?: (event: CanvasErrorEvent) => void;
163
}
164
```
165
166
### WebView
167
168
Web view container for embedding external web content.
169
170
```typescript { .api }
171
/**
172
* Web view container for external content
173
* @supported weapp, alipay, swan, tt, qq, jd, h5, rn, harmony_hybrid
174
*/
175
const WebView: ComponentType<WebViewProps>;
176
177
interface WebViewProps extends StandardProps {
178
/** Web page URL to load
179
* @supported weapp, alipay, swan, tt, qq, jd, h5, rn, harmony_hybrid
180
*/
181
src?: string;
182
/** Progressive web app flag
183
* @supported weapp, tt, qq, jd
184
* @default false
185
*/
186
progressBarColor?: string;
187
/** Web view load callback */
188
onLoad?: (event: WebViewLoadEvent) => void;
189
/** Web view error callback */
190
onError?: (event: WebViewErrorEvent) => void;
191
/** Web view message callback */
192
onMessage?: (event: WebViewMessageEvent) => void;
193
}
194
```
195
196
### Advertisement Components
197
198
Components for displaying various types of advertisements.
199
200
```typescript { .api }
201
/**
202
* Advertisement display component
203
* @supported weapp, alipay, swan, tt, qq, jd
204
*/
205
const Ad: ComponentType<AdProps>;
206
207
interface AdProps extends StandardProps {
208
/** Ad unit ID
209
* @supported weapp, alipay, swan, tt, qq, jd
210
*/
211
unitId?: string;
212
/** Ad type
213
* @supported weapp, tt, qq, jd
214
* @default "banner"
215
*/
216
adType?: 'banner' | 'video' | 'grid' | 'large';
217
/** Ad intervals array
218
* @supported weapp, tt, qq, jd
219
*/
220
adIntervals?: number;
221
/** Ad theme
222
* @supported weapp, tt, qq, jd
223
* @default "white"
224
*/
225
adTheme?: 'white' | 'black';
226
/** Ad load callback */
227
onLoad?: (event: AdLoadEvent) => void;
228
/** Ad error callback */
229
onError?: (event: AdErrorEvent) => void;
230
/** Ad close callback */
231
onClose?: (event: AdCloseEvent) => void;
232
}
233
234
/**
235
* Custom advertisement component
236
* @supported weapp, tt, qq, jd
237
*/
238
const AdCustom: ComponentType<AdCustomProps>;
239
240
interface AdCustomProps extends StandardProps {
241
/** Ad unit ID
242
* @supported weapp, tt, qq, jd
243
*/
244
unitId?: string;
245
/** Ad intervals
246
* @supported weapp, tt, qq, jd
247
*/
248
adIntervals?: number;
249
/** Ad load callback */
250
onLoad?: (event: AdLoadEvent) => void;
251
/** Ad error callback */
252
onError?: (event: AdErrorEvent) => void;
253
}
254
255
/**
256
* Aweme data component
257
* @supported weapp, tt, qq, jd
258
*/
259
const AwemeData: ComponentType<AwemeDataProps>;
260
261
interface AwemeDataProps extends StandardProps {
262
/** Aweme data type
263
* @supported weapp, tt, qq, jd
264
*/
265
type?: string;
266
/** Aweme data load callback */
267
onLoad?: (event: AwemeDataLoadEvent) => void;
268
/** Aweme data error callback */
269
onError?: (event: AwemeDataErrorEvent) => void;
270
}
271
```
272
273
### Platform Services
274
275
Components for accessing platform-specific services and features.
276
277
```typescript { .api }
278
/**
279
* Official account integration component
280
* @supported weapp
281
*/
282
const OfficialAccount: ComponentType<OfficialAccountProps>;
283
284
interface OfficialAccountProps extends StandardProps {
285
/** Official account load callback */
286
onLoad?: (event: TaroEvent) => void;
287
/** Official account error callback */
288
onError?: (event: OfficialAccountErrorEvent) => void;
289
}
290
291
/**
292
* Open data access component
293
* @supported weapp, tt, qq, jd
294
*/
295
const OpenData: ComponentType<OpenDataProps>;
296
297
interface OpenDataProps extends StandardProps {
298
/** Open data type
299
* @supported weapp, tt, qq, jd
300
*/
301
type?: 'groupName' | 'userNickName' | 'userAvatarUrl' | 'userGender' | 'userCity' | 'userProvince' | 'userCountry' | 'userLanguage';
302
/** Open group ID
303
* @supported weapp, tt, qq, jd
304
*/
305
openGid?: string;
306
/** Default text
307
* @supported weapp, tt, qq, jd
308
*/
309
defaultText?: string;
310
/** Default avatar
311
* @supported weapp, tt, qq, jd
312
*/
313
defaultAvatar?: string;
314
/** Open data error callback */
315
onError?: (event: OpenDataErrorEvent) => void;
316
}
317
318
/**
319
* Login interface component
320
* @supported weapp, alipay, swan, tt, qq, jd
321
*/
322
const Login: ComponentType<LoginProps>;
323
324
interface LoginProps extends StandardProps {
325
/** Login success callback */
326
onSuccess?: (event: LoginSuccessEvent) => void;
327
/** Login fail callback */
328
onFail?: (event: LoginFailEvent) => void;
329
}
330
331
/**
332
* Baidu Smart Program follow component
333
* @supported swan
334
*/
335
const FollowSwan: ComponentType<FollowSwanProps>;
336
337
interface FollowSwanProps extends StandardProps {
338
/** Follow swan callback */
339
onFollow?: (event: FollowSwanEvent) => void;
340
/** Follow swan error callback */
341
onError?: (event: FollowSwanErrorEvent) => void;
342
}
343
344
/**
345
* Lifestyle service component
346
* @supported weapp, tt, qq, jd
347
*/
348
const Lifestyle: ComponentType<LifestyleProps>;
349
350
interface LifestyleProps extends StandardProps {
351
/** Lifestyle service type
352
* @supported weapp, tt, qq, jd
353
*/
354
type?: string;
355
/** Lifestyle load callback */
356
onLoad?: (event: LifestyleLoadEvent) => void;
357
/** Lifestyle error callback */
358
onError?: (event: LifestyleErrorEvent) => void;
359
}
360
361
/**
362
* Inline payment interface component
363
* @supported weapp, tt, qq, jd
364
*/
365
const InlinePaymentPanel: ComponentType<InlinePaymentPanelProps>;
366
367
interface InlinePaymentPanelProps extends StandardProps {
368
/** Payment request parameters
369
* @supported weapp, tt, qq, jd
370
*/
371
requestParameters?: Record<string, any>;
372
/** Payment success callback */
373
onPaymentSuccess?: (event: PaymentSuccessEvent) => void;
374
/** Payment fail callback */
375
onPaymentFail?: (event: PaymentFailEvent) => void;
376
}
377
```
378
379
### Content and Social Components
380
381
Components for content services and social interactions.
382
383
```typescript { .api }
384
/**
385
* Comment detail display component
386
* @supported weapp, tt, qq, jd
387
*/
388
const CommentDetail: ComponentType<CommentDetailProps>;
389
390
interface CommentDetailProps extends StandardProps {
391
/** Comment ID
392
* @supported weapp, tt, qq, jd
393
*/
394
commentId?: string;
395
/** Comment load callback */
396
onLoad?: (event: CommentLoadEvent) => void;
397
/** Comment error callback */
398
onError?: (event: CommentErrorEvent) => void;
399
}
400
401
/**
402
* Comment list display component
403
* @supported weapp, tt, qq, jd
404
*/
405
const CommentList: ComponentType<CommentListProps>;
406
407
interface CommentListProps extends StandardProps {
408
/** Content ID
409
* @supported weapp, tt, qq, jd
410
*/
411
contentId?: string;
412
/** Comment list load callback */
413
onLoad?: (event: CommentListLoadEvent) => void;
414
/** Comment list error callback */
415
onError?: (event: CommentListErrorEvent) => void;
416
}
417
418
/**
419
* Like interaction component
420
* @supported weapp, tt, qq, jd
421
*/
422
const Like: ComponentType<LikeProps>;
423
424
interface LikeProps extends StandardProps {
425
/** Content ID to like
426
* @supported weapp, tt, qq, jd
427
*/
428
contentId?: string;
429
/** Like status change callback */
430
onChange?: (event: LikeChangeEvent) => void;
431
/** Like error callback */
432
onError?: (event: LikeErrorEvent) => void;
433
}
434
435
/**
436
* Customer service contact button
437
* @supported weapp, alipay, swan, tt, qq, jd
438
*/
439
const ContactButton: ComponentType<ContactButtonProps>;
440
441
interface ContactButtonProps extends StandardProps {
442
/** Contact success callback */
443
onContact?: (event: ContactSuccessEvent) => void;
444
}
445
```
446
447
### Configuration and Utility Components
448
449
Components for page configuration and utility functions.
450
451
```typescript { .api }
452
/**
453
* Page metadata configuration component
454
* @supported weapp, tt, qq, jd
455
*/
456
const PageMeta: ComponentType<PageMetaProps>;
457
458
interface PageMetaProps extends StandardProps {
459
/** Page background text style
460
* @supported weapp, tt, qq, jd
461
* @default "dark"
462
*/
463
backgroundTextStyle?: 'dark' | 'light';
464
/** Page background color
465
* @supported weapp, tt, qq, jd
466
* @default "#ffffff"
467
*/
468
backgroundColor?: string;
469
/** Page background color top
470
* @supported weapp, tt, qq, jd
471
* @default "#ffffff"
472
*/
473
backgroundColorTop?: string;
474
/** Page background color bottom
475
* @supported weapp, tt, qq, jd
476
* @default "#ffffff"
477
*/
478
backgroundColorBottom?: string;
479
/** Page scroll flag
480
* @supported weapp, tt, qq, jd
481
* @default false
482
*/
483
enablePullDownRefresh?: boolean;
484
/** Page orientation
485
* @supported weapp, tt, qq, jd
486
* @default "portrait"
487
*/
488
pageOrientation?: 'auto' | 'portrait' | 'landscape';
489
/** Page scroll callback */
490
onScroll?: (event: PageMetaScrollEvent) => void;
491
/** Page resize callback */
492
onResize?: (event: PageMetaResizeEvent) => void;
493
}
494
495
/**
496
* Custom wrapper component
497
* @supported weapp, alipay, swan, tt, qq, jd, h5, rn
498
*/
499
const CustomWrapper: ComponentType<CustomWrapperProps>;
500
501
interface CustomWrapperProps extends StandardProps {
502
// Custom wrapper properties
503
}
504
505
/**
506
* Content slot component
507
* @supported weapp, alipay, swan, tt, qq, jd, h5, rn
508
*/
509
const Slot: ComponentType<SlotProps>;
510
511
interface SlotProps extends StandardProps {
512
/** Slot name
513
* @supported weapp, alipay, swan, tt, qq, jd, h5, rn
514
*/
515
name?: string;
516
}
517
518
/**
519
* Native slot component
520
* @supported weapp, tt, qq, jd
521
*/
522
const NativeSlot: ComponentType<NativeSlotProps>;
523
524
interface NativeSlotProps extends StandardProps {
525
/** Native slot name
526
* @supported weapp, tt, qq, jd
527
*/
528
name?: string;
529
}
530
531
/**
532
* Script execution component
533
* @supported weapp, tt, qq, jd, h5
534
*/
535
const Script: ComponentType<ScriptProps>;
536
537
interface ScriptProps extends StandardProps {
538
/** Script source URL
539
* @supported weapp, tt, qq, jd, h5
540
*/
541
src?: string;
542
/** Script load callback */
543
onLoad?: (event: TaroEvent) => void;
544
/** Script error callback */
545
onError?: (event: ScriptErrorEvent) => void;
546
}
547
548
/**
549
* Pull-to-refresh interaction component
550
* @supported weapp, tt, qq, jd, h5
551
*/
552
const PullToRefresh: ComponentType<PullToRefreshProps>;
553
554
interface PullToRefreshProps extends StandardProps {
555
/** Refresh callback */
556
onRefresh?: (event: TaroEvent) => void;
557
}
558
```
559
560
## Types
561
562
```typescript { .api }
563
// Map related interfaces
564
interface MapMarker {
565
id: number;
566
latitude: number;
567
longitude: number;
568
title?: string;
569
iconPath?: string;
570
rotate?: number;
571
alpha?: number;
572
width?: number;
573
height?: number;
574
anchor?: { x: number; y: number };
575
callout?: MapCallout;
576
label?: MapLabel;
577
}
578
579
interface MapPolyline {
580
points: Array<{ latitude: number; longitude: number }>;
581
color?: string;
582
width?: number;
583
dottedLine?: boolean;
584
arrowLine?: boolean;
585
arrowIconPath?: string;
586
borderColor?: string;
587
borderWidth?: number;
588
}
589
590
interface MapCircle {
591
latitude: number;
592
longitude: number;
593
color?: string;
594
fillColor?: string;
595
radius: number;
596
strokeWidth?: number;
597
}
598
599
interface MapControl {
600
id?: number;
601
position: { left: number; top: number; width?: number; height?: number };
602
iconPath: string;
603
clickable?: boolean;
604
}
605
606
interface MapPolygon {
607
points: Array<{ latitude: number; longitude: number }>;
608
strokeWidth?: number;
609
strokeColor?: string;
610
fillColor?: string;
611
zIndex?: number;
612
}
613
614
interface MapIncludePoint {
615
latitude: number;
616
longitude: number;
617
padding?: number[];
618
}
619
620
interface MapCallout {
621
content: string;
622
color?: string;
623
fontSize?: number;
624
borderRadius?: number;
625
bgColor?: string;
626
padding?: number;
627
display?: 'BYCLICK' | 'ALWAYS';
628
textAlign?: 'left' | 'right' | 'center';
629
}
630
631
interface MapLabel {
632
content: string;
633
color?: string;
634
fontSize?: number;
635
x?: number;
636
y?: number;
637
anchorX?: number;
638
anchorY?: number;
639
borderWidth?: number;
640
borderColor?: string;
641
borderRadius?: number;
642
bgColor?: string;
643
padding?: number;
644
textAlign?: 'left' | 'right' | 'center';
645
}
646
647
// Map event interfaces
648
interface MapTapEvent extends TaroEvent {
649
detail: {
650
latitude: number;
651
longitude: number;
652
};
653
}
654
655
interface MapMarkerTapEvent extends TaroEvent {
656
detail: {
657
markerId: number;
658
latitude: number;
659
longitude: number;
660
};
661
}
662
663
interface MapLabelTapEvent extends TaroEvent {
664
detail: {
665
markerId: number;
666
};
667
}
668
669
interface MapControlTapEvent extends TaroEvent {
670
detail: {
671
controlId: number;
672
};
673
}
674
675
interface MapCalloutTapEvent extends TaroEvent {
676
detail: {
677
markerId: number;
678
};
679
}
680
681
interface MapRegionChangeEvent extends TaroEvent {
682
detail: {
683
type: 'begin' | 'end';
684
causedBy: 'scale' | 'drag' | 'update';
685
region: {
686
latitude: number;
687
longitude: number;
688
latitudeDelta: number;
689
longitudeDelta: number;
690
};
691
};
692
}
693
694
interface MapPoiTapEvent extends TaroEvent {
695
detail: {
696
name: string;
697
latitude: number;
698
longitude: number;
699
};
700
}
701
702
interface MapErrorEvent extends TaroEvent {
703
detail: {
704
errMsg: string;
705
};
706
}
707
708
// Canvas event interfaces
709
interface CanvasTouchEvent extends TaroEvent {
710
detail: {
711
x: number;
712
y: number;
713
};
714
}
715
716
interface CanvasErrorEvent extends TaroEvent {
717
detail: {
718
errMsg: string;
719
};
720
}
721
722
// WebView event interfaces
723
interface WebViewLoadEvent extends TaroEvent {
724
detail: {
725
src: string;
726
};
727
}
728
729
interface WebViewErrorEvent extends TaroEvent {
730
detail: {
731
src: string;
732
errMsg: string;
733
};
734
}
735
736
interface WebViewMessageEvent extends TaroEvent {
737
detail: {
738
data: any[];
739
};
740
}
741
742
// Advertisement event interfaces
743
interface AdLoadEvent extends TaroEvent {
744
detail: {
745
height: number;
746
};
747
}
748
749
interface AdErrorEvent extends TaroEvent {
750
detail: {
751
errMsg: string;
752
errCode: number;
753
};
754
}
755
756
interface AdCloseEvent extends TaroEvent {
757
detail: {
758
// Close event details
759
};
760
}
761
762
// Aweme data event interfaces
763
interface AwemeDataLoadEvent extends TaroEvent {
764
detail: {
765
// Aweme data load details
766
};
767
}
768
769
interface AwemeDataErrorEvent extends TaroEvent {
770
detail: {
771
errMsg: string;
772
};
773
}
774
775
// Platform service event interfaces
776
interface OfficialAccountErrorEvent extends TaroEvent {
777
detail: {
778
errMsg: string;
779
};
780
}
781
782
interface OpenDataErrorEvent extends TaroEvent {
783
detail: {
784
errMsg: string;
785
};
786
}
787
788
interface LoginSuccessEvent extends TaroEvent {
789
detail: {
790
code: string;
791
};
792
}
793
794
interface LoginFailEvent extends TaroEvent {
795
detail: {
796
errMsg: string;
797
};
798
}
799
800
interface PaymentSuccessEvent extends TaroEvent {
801
detail: {
802
// Payment success details
803
};
804
}
805
806
interface PaymentFailEvent extends TaroEvent {
807
detail: {
808
errMsg: string;
809
};
810
}
811
812
// Follow Swan event interfaces
813
interface FollowSwanEvent extends TaroEvent {
814
detail: {
815
// Follow event details
816
};
817
}
818
819
interface FollowSwanErrorEvent extends TaroEvent {
820
detail: {
821
errMsg: string;
822
};
823
}
824
825
// Lifestyle event interfaces
826
interface LifestyleLoadEvent extends TaroEvent {
827
detail: {
828
// Lifestyle load details
829
};
830
}
831
832
interface LifestyleErrorEvent extends TaroEvent {
833
detail: {
834
errMsg: string;
835
};
836
}
837
838
// Content service event interfaces
839
interface CommentLoadEvent extends TaroEvent {
840
detail: {
841
// Comment load details
842
};
843
}
844
845
interface CommentErrorEvent extends TaroEvent {
846
detail: {
847
errMsg: string;
848
};
849
}
850
851
interface CommentListLoadEvent extends TaroEvent {
852
detail: {
853
// Comment list details
854
};
855
}
856
857
interface CommentListErrorEvent extends TaroEvent {
858
detail: {
859
errMsg: string;
860
};
861
}
862
863
interface LikeChangeEvent extends TaroEvent {
864
detail: {
865
liked: boolean;
866
};
867
}
868
869
interface LikeErrorEvent extends TaroEvent {
870
detail: {
871
errMsg: string;
872
};
873
}
874
875
interface ContactSuccessEvent extends TaroEvent {
876
detail: {
877
// Contact details
878
};
879
}
880
881
// Page configuration event interfaces
882
interface PageMetaScrollEvent extends TaroEvent {
883
detail: {
884
scrollTop: number;
885
};
886
}
887
888
interface PageMetaResizeEvent extends TaroEvent {
889
detail: {
890
size: {
891
windowWidth: number;
892
windowHeight: number;
893
};
894
};
895
}
896
897
interface ScriptErrorEvent extends TaroEvent {
898
detail: {
899
src: string;
900
errMsg: string;
901
};
902
}
903
```