Como inferir mapValues digitados usando pesquisas em texto datilografado?
Igual a:
Como inferir uma matriz digitada a partir de uma matriz de chave dinâmica em texto datilografado?
Eu estou olhando para digitar um objeto genérico que recebe um mapa de chaves arbitrárias para valores de pesquisa e retorna as mesmas chaves com valores digitados (como um _.mapValues digitado).
A capacidade de obter uma propriedade digitada singular de um objeto está documentada e funciona. Com matrizes, é necessário codificar sobrecargas para tuplas digitadas, mas, para objetos, estou recebendo um erro 'Assinatura de índice de cadeia duplicada'.
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'
// }
Como isso pode ser implementado com texto datilografado?