Skip to content

Instantly share code, notes, and snippets.

@kitcat-dev
Created September 20, 2021 12:34
Show Gist options
  • Select an option

  • Save kitcat-dev/cc8648bafb391228f4fd8ef188e2ffad to your computer and use it in GitHub Desktop.

Select an option

Save kitcat-dev/cc8648bafb391228f4fd8ef188e2ffad to your computer and use it in GitHub Desktop.

Revisions

  1. kitcat-dev created this gist Sep 20, 2021.
    15 changes: 15 additions & 0 deletions stringify-values.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,15 @@
    type Stringified<T> = { [k in keyof T]: T[k] extends number ? string : T[k] };

    const stringifyWithKeys = <T, K extends keyof T>(obj: T, ...keys: K[]): Stringified<T> => {
    const stringifiedObject = obj as Stringified<T>;

    for (const [key, value] of Object.entries(pick(stringifiedObject, ...keys))) {
    if (value !== undefined && typeof value === 'number') {
    stringifiedObject[key as K] = String(value) as T[K] extends number ? string : T[K];
    }
    }

    return stringifiedObject;
    };

    stringifyWithKeys({ id: 2, name: 'Albert', age: 25 }, 'id') // { id: '2', name: 'Albert', age: 25 }