10LOC

#key-remapping

TypeScriptadvanced

Mapped types with key remapping via as

type Getters<T> = {
  [K in keyof T as `get${Capitalize<string & K>}`]: () => T[K];
};

export const toGetters = <T extends object>(obj: T): Getters<T> => {

Turn a plain object type into a matching set of getter methods, renaming every key to getX without writing each one by hand.