# 十四.装包和拆包
# 1.装包
type Proxy<T> = {
get(): T;
set(value: T): void;
};
type Proxify<T> = {
[P in keyof T]: Person<T[P]>;
};
let props = {
name: "abc",
age: 111,
};
function proxify<T>(obj: T): Proxify<T> {
let result = {} as Proxify<T>;
for (let key in obj) {
let value = obj[key];
result[key] = {
get() {
return value;
},
set: (newValue) => (value = newValue),
};
}
return result;
}
let proxpProps = proxify(props);
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 2.拆包
function unProxify<T>(proxpProps: Proxify<T>): T {
let result = {} as T;
for (let key in proxpProps) {
let value = proxpProps[key];
result[key] = value.get();
}
return result;
}
let proxy = unProxify(proxpProps);
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
← 十三.内置类型 十五.自定义集合操作 →