Надеюсь, это поможет!
ий на:
Как вывести типизированный массив из массива динамического ключа в машинописи?
Я пытаюсь напечатать универсальный объект, который получает карту произвольных ключей для поиска значений и возвращает те же ключи с типизированными значениями (как типизированные _.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'
// }
Как это можно реализовать с помощью машинописи?