• 对象或数组key交换

    类型参数

    • T extends object
    • K1 extends string | number | symbol
    • K2 extends string | number | symbol

    参数

    返回 T

    // 对象属性交换
    swap({ a: 1, b: 2 }, 'a', 'b'); // { b: 1, a: 2 }
    swap({ a: 1, b: 2 }, 'a', 'c' as any); // { c: 1, b: 2, a: undefined }
    // 数组item交换
    swap([1, 2], 1, 0); // [2, 1]
    swap([1, 2], 1, 2); // [1, undefined, 2]