Typescript как вернуть тип ключа

Пишу рендерер и не могу найти инфы, как правильно вернуть именно тип определённого свойства типа, передавая ключ в другом поле.

Может кто подскажет или укажет, что не так делаю? :(

type TUser = {
    age: number,
    initials: {
        name: string
    }
}

type TRendererFunctionArgs<TValues> = {
    value: TValues[keyof TValues],
}

type TRenderer<TValues> = {
    name: keyof TValues,
    renderer: ({ value }: TRendererFunctionArgs<TValues>) => string,
}

const renderer : TRenderer<TUser> = {
    name: 'initials',
    renderer: ({ value }) => value.name, // <--- Тут проблема, т.к. value : value: number | {name: string}
}

Ответы (1 шт):

Автор решения: Alexandr Kiseloy

type TUser = {
    age: number,
    initials: {
        name: string
    }
}

type TRenderer<TValues> = { [K in keyof TValues]-?: {
    name: K;
    renderer: ({ value }: { value: TValues[K] }) => string;
} }[keyof TValues];

const renderer : TRenderer<TUser> = {
    name: 'initials',
    renderer: ({ value }) => value.name
}

→ Ссылка