Надеюсь, это поможет!

ий на:

Как вывести типизированный массив из массива динамического ключа в машинописи?

Я пытаюсь напечатать универсальный объект, который получает карту произвольных ключей для поиска значений и возвращает те же ключи с типизированными значениями (как типизированные _.mapValues).

Возможность получения единственного типизированного свойства от объекта задокументирована и работает. С массивами вам нужно жестко закодировать перегрузки в типизированные кортежи, но для объектов я получаю сообщение об ошибке «Duplicate string index index».

export interface IPerson {
    age: number;
    name: string;
}

const person: IPerson = {
    age: 1,
    name: ""
}

function getProperty<T, K extends keyof T>(o: T, name: K): T[K] {
    return o[name];
}

const a = getProperty(person, 'age');
// a: number

const n = getProperty(person, 'name');
// n: string

function getProperties<T, K extends keyof T>(obj: T, keys: { [key: string]: K }) {
    const def: { [key: string]: T[K] } = {};
    return Object.entries(keys).reduce((result, [key, value]: [string, K]) => {
        result[key] = getProperty(obj, value);
        return result;
    }, def);
}

const { a2, n2 } = getProperties(person, {
    a2: 'name',
    n2: 'age'
});

// Result:
// {
//     a2: string | number, 
//     n2: string | number
// }

// What I'm looking for:
// {
//     a2: string, 
//     n2: number' 
// }

Как это можно реализовать с помощью машинописи?

Ответы на вопрос(2)

Ваш ответ на вопрос