@modern-kit/utils
Version:
33 lines (31 loc) • 1.46 kB
TypeScript
/**
* @description 주어진 객체의 각 키와 값을 반전하여 새로운 객체를 생성합니다.
*
* 기본적으로 객체의 키와 값을 반전하지만, `iteratee` 함수를 제공하면 각 값에 대해 변형된 키를 생성하여 반전할 수 있습니다.
*
* @template K - 원래 객체의 키 타입입니다.
* @template V - 원래 객체의 값 타입입니다.
* @template TK - iteratee를 통해 변형된 키의 타입입니다.
* @param {Record<K, V>} obj - 키와 값을 반전할 객체입니다.
* @param {(iterateData?: { value: V; key: K; obj: Record<K, V> }) => TK} iteratee - 값을 변형하여 반전할 키를 생성하는 함수입니다.
* @returns {Record<TK, K>} 키와 값이 반전된 새로운 객체를 반환합니다.
*
* @example
* const original = { a: "1", b: "2", c: "3" };
* const inverted = invert(original);
*
* inverted; // { 1: "a", 2: "b", 3: "c" }
*
* @example
* const original = { a: "1", b: "2", c: "3" };
* const customInverted = invert(original, ({ value }) => `key-${value}`);
*
* customInverted; // { "key-1": "a", "key-2": "b", "key-3": "c" }
*/
declare function invert<K extends PropertyKey, V extends PropertyKey>(obj: Record<K, V>): Record<V, K>;
declare function invert<K extends PropertyKey, V, TK extends PropertyKey>(obj: Record<K, V>, iteratee: (iterateData: {
value: V;
key: K;
obj: Record<K, V>;
}) => TK): Record<TK, K>;
export { invert };