Skip to content

Instantly share code, notes, and snippets.

@kitcat-dev
Created September 20, 2021 12:34
Show Gist options
  • Save kitcat-dev/cc8648bafb391228f4fd8ef188e2ffad to your computer and use it in GitHub Desktop.
Save kitcat-dev/cc8648bafb391228f4fd8ef188e2ffad to your computer and use it in GitHub Desktop.
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 }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment