typescript :プロキシを実装するためにマップ型を使用する
4411 ワード
型のタイプを使用してプロキシを実装する方法を示しています.これは、値のためのプロキシのタイプが何であるか、すなわち、
Proxy<T>
と、プロキシ化されたオブジェクトのタイプが何であるか、すなわちProxify<T>
であるかを明確に定義します.ただし、proxify関数の実装は空になっています.マッピング型の理解を深めるために実装しました.type Proxy<T> = {
get(): T;
set(value: T): void;
};
type Proxify<T> = {
[K in keyof T]: Proxy<T[K]>;
};
function proxify<T extends object>(o: T): Proxify<T> {
const result = {} as Proxify<T>;
for (let key in o) {
let rawValue = o[key];
result[key] = {
get: () => rawValue,
set: (value) => {
rawValue = value;
},
};
}
return result;
}
let props = { rooms: 4 };
let proxifiedProps = proxify(props);
proxifiedProps.rooms.set(5);
console.log(proxifiedProps.rooms.get()); // output 5
ご存知のように、それは難しいことではありませんが、私のような学習者の概念の理解を得ることができます.Reference
この問題について(typescript :プロキシを実装するためにマップ型を使用する), 我々は、より多くの情報をここで見つけました https://dev.to/mattzgg_94/typescript-use-mapped-type-to-implement-a-proxy-4im2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol