typescript :プロキシを実装するためにマップ型を使用する


型のタイプを使用してプロキシを実装する方法を示しています.これは、値のためのプロキシのタイプが何であるか、すなわち、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
ご存知のように、それは難しいことではありませんが、私のような学習者の概念の理解を得ることができます.