All files objectAccessor.ts

100% Statements 25/25
100% Branches 3/3
100% Functions 3/3
100% Lines 25/25

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 251x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 2x 2x 1x 1x 1x 1x 1x
/**
 * 任務:實作一個函式 `createObjectAccessor`,該函式接收一個物件,並回傳一個新的物件,該物件有兩個方法:get 和 set。
 * get 方法用於獲取原物件的屬性值,set 方法用於設定原物件的屬性值。
 *
 * 範例:
 * const obj = { name: 'John', age: 30 };
 * const accessor = createObjectAccessor(obj);
 * accessor.get('name') 應該回傳 'John'
 * accessor.set('age', 31);
 * accessor.get('age') 應該回傳 31
 *
 * @param obj - 一個物件
 * @returns - 回傳一個物件,該物件有 get 和 set 兩個方法
 */
export function createObjectAccessor<T>(obj: T) {
    // 請在此處寫下你的程式碼
    return {
        get(key: keyof T) {
            return obj[key];
        },
        set(key: keyof T, value: T[keyof T]) {
            obj[key] = value;
        }
    }
}