// *** before: ***
type Getters<T> = {
[K in keyof T]: () => T[K];
// ключ остаётся тем же самым - "get" + имя поля не собрать
};
// *** in version 4.1: ***
type GettersRenamed<T> = {
[K in keyof T as `get${Capitalize<string & K>}`]: () => T[K];
};
interface Person { name: string; age: number; }
type PersonGetters = GettersRenamed<Person>;
// { getName: () => string; getAge: () => number }