-
Notifications
You must be signed in to change notification settings - Fork 1
/
main.d.ts
153 lines (146 loc) · 4.35 KB
/
main.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
declare module 'axe4js' {
export interface Data {
/**
* 全局共享的数据, 单例。
*/
readonly sharedData: SharedData;
/**
* 构建一个用于传输的数据的Payload类型。
*/
create(): Payload;
}
export interface Router {
/**
* 使用路由进行页面跳转。
* @param url 跳转的具体URL, 不建议在URL上拼接参数。
* @param payload 携带数据
* @param callback 回调处理
*/
route(url: string, payload?: Payload, callback?: (payload?: Payload) => void ): void;
/**
* 进行回调。
* 对于向其他模块暴露路由的界面,如果有回调处理的逻辑,则在路由跳转后调用该函数返回数据。
* 该函数内部检测当前是否有人回调需要执行
* 需要注意,回调时会自动关闭当前页面。
* @param payload 数据。
*/
callback(payload?: Payload): void;
/**
* 使用路由跳转到当前页面后,获取这次路由跳转时所携带的数据
* 获取数据是一个异步过程,所以通过这个函数来检测与获取数据
* @param callback 处理负载数据。
*/
getRouteInfo(callback?: (payload?: RouterInfo) => void): void;
}
export interface Event {
/**
* 发送事件通知
* @param event 事件名
* @param payload 数据
*/
postEvent(event: string, payload?: Payload);
/**
* 注册监听。
* @param event 事件名
* @param callback 回调。
*/
registerListener(event: string, callback: (payload?: Payload) => void): void;
/**
* 取消监听。
* 需要注意,取消的是当前页面的所有该时间的监听。
* @param event
*/
removeListener(event: string);
}
export interface RouterInfo {
/**
* 路由跳转时,传递的参数
*/
readonly payload: Payload;
/**
* 当前是否有回调。
*/
readonly needCallback: boolean;
}
export interface Payload {
/**
* 设置 Number 类型
*/
setNumber(key: string, value: number):void;
/**
* 设置 Boolean 类型
*/
setBoolean(key: string, value: boolean):void;
/**
* 设置 String 类型
*/
setString(key: string, value: string):void;
/**
* 设置 Array 类型
*/
setArray(key: string, value: array<any>):void;
/**
* 设置 Object 类型 ,对于iOS中的NSDictionary , java中的 Map
*/
setObject(key: string, value: object):void;
/**
* 设置 Model 类型
* Model类型为前后端交互操作中的model类型
*/
setModel(key: string, value: object):void;
/**
* 设置 二进制数据, 对应iOS中的 NSData, java中的 Byte Array .
* 而在 js中读取和设置的是 base64的字符串。
* @param value 值, 为base64字符串。
*/
setData(key: string, value: string):void;
/**
* 设置 图片类型,对应iOS中的 UIImage, Java中的 Image类型。
* 而在 js中读取和设置的是 base64的uri字符串 , 如 data:image/jpeg;base64,xxxx
* @param value 值, 为base64的uri字符串。
*/
setImage(key: string, value: string):void;
/**
* 设置 Date类型 对应iOS中的 NSDate, java中的 Date .
*
* @param value 值, Date类型。
*/
setDate(key: string, value: date):void;
/**
* 删除某项数据。
*
*/
removeItem(key: string):void;
/**
* JS中的读取方法,不需要指定类型,而是根据约束去读, 所以API文档一定要写清楚。
* undefined 表示出错。 而null表示为空。
* @param key
*/
get(key: string):any;
}
export interface SharedData extends Payload {
/**
* 共享数据不能使用 同步的get方法, 必须使用异步的get 方法。
* @param key
* @param callback
*/
get(key: string, callback: (any) => void): void;
}
/**
* 路由
*/
export var router: Router;
/**
* 数据
*/
export var data: Data;
/**
* 事件
*/
export var event: Event;
/**
* 最后附带一下 WebViewJavaScriptBridge, 该js桥接的使用见
* https://github.com/marcuswestin/WebViewJavascriptBridge
*/
export function setupWebViewJavascriptBridge(callback: (JavascriptBridge: object) => void):void;
}