UNPKG

3.58 kBTypeScriptView Raw
1declare namespace tinyapp {
2 type OnShareAppMessageOptions = {
3 from: 'button';
4 target: Record<string, any>;
5 webViewUrl?: string;
6 } | {
7 from: 'menu';
8 webViewUrl?: string;
9 };
10
11 interface IOnShareAppMessageResult {
12 title: string;
13 desc?: string;
14 path: string;
15 content?: string;
16 imageUrl?: string;
17 bgImgUrl?: string;
18 success?(): void;
19 fail?(): void;
20 }
21
22 type IPageScrollEvent = [
23 {
24 readonly scrollTop: number;
25 readonly scrollHeight: number;
26 },
27 null,
28 null
29 ] | {
30 readonly scrollTop: number;
31 readonly scrollHeight: number;
32 };
33
34 interface IPageEvents {
35 onBack?(): void;
36 onKeyboardHeight?(): void;
37 onOptionMenuClick?(): void;
38 onPopMenuClick?(): void;
39 onPullIntercept?(): void;
40
41 /**
42 * 页面相关事件处理函数--监听用户下拉动作
43 */
44 onPullDownRefresh?(params: { from: 'manual' | 'code'; }): void;
45 onTitleClick?(): void;
46
47 /**
48 * 版本要求:基础库 1.11.0 或更高版本,若版本较低,建议做 兼容处理。
49 * 点击标签(tab)时触发。
50 */
51 onTabItemTap?(item: { index: number; pagePath: string; text: string; }): void;
52
53 beforeTabItemTap?(): void;
54 }
55
56 interface IPageOptionsMethods extends Pick<
57 IPageEvents,
58 'onPullDownRefresh'
59 | 'onTitleClick'
60 | 'onOptionMenuClick'
61 | 'onPopMenuClick'
62 | 'onPullIntercept'
63 | 'onTabItemTap'
64 > {
65 /**
66 * 生命周期函数--监听页面加载
67 *
68 * @param query query 参数为 my.navigateTo 和 my.redirectTo 中传递的 query 对象。
69 */
70 onLoad?(query: Query): void;
71
72 /**
73 * 生命周期函数--监听页面初次渲染完成
74 */
75 onReady?(): void;
76
77 /**
78 * 生命周期函数--监听页面显示
79 */
80 onShow?(): void;
81
82 /**
83 * 生命周期函数--监听页面隐藏
84 */
85 onHide?(): void;
86
87 /**
88 * 生命周期函数--监听页面卸载
89 */
90 onUnload?(): void;
91
92 /**
93 * 页面上拉触底事件的处理函数
94 */
95 onReachBottom?(): void;
96
97 /**
98 * 返回自定义分享信息
99 */
100 onShareAppMessage?(options: OnShareAppMessageOptions): IOnShareAppMessageResult;
101
102 /**
103 * 页面滚动时触发
104 *
105 * @param event 滚动事件参数
106 */
107 onPageScroll?(event: IPageScrollEvent): void;
108 }
109
110 type SetDataMethod<D> = (data: Partial<D>, callback?: () => void) => void;
111
112 interface IPageInstance<D> extends Record<string, any> {
113 /**
114 * 页面数据。
115 */
116 readonly data: D;
117
118 /**
119 * 将数据从逻辑层发送到视图层,同时改变对应的 this.data 的值
120 */
121 setData: SetDataMethod<D>;
122
123 /**
124 * 同setData,但是相比于setData,在处理长列表的时候,其具有更高的性能
125 */
126 $spliceData: (operations: { [k: string]: [number, number, ...any[]] }) => void;
127
128 /**
129 * Page 路径,对应 app.json 中配置的路径值。
130 */
131 readonly route: string;
132
133 /**
134 * 批量更新数据。
135 */
136 $batchedUpdates: (fn: () => void) => void;
137 }
138
139 /**
140 * Page 实现的接口对象
141 */
142 type PageOptions<D = Record<string, any>> = IPageOptionsMethods
143 & {
144 /**
145 * 初始数据或返回初始化数据的函数, 为对象时所有页面共享。
146 */
147 data?: D;
148
149 /**
150 * 事件处理函数集合。
151 */
152 events?: IPageEvents & ThisType<IPageInstance<D>>;
153
154 [name: string]: any;
155 }
156 & ThisType<IPageInstance<D>>;
157}