[Ajuda.Dev] Typescript objetos dinamicos
Dificuldade nessa tipagem de objeto dinamico.
Salve Turma! Estou tentando aplicar um conceito no meu projeto onde eu utilize menos IFs passando como propriedade do objeto o tipo de retorno que eu gostaria de receber.
export const getUsefulKind0EventData = (data:Event)=>{
const content = JSON.parse(data.content )as Kind0Metadata;
return convertToUser({ ...content, created_at: data.created_at,pubkey:data.pubkey })
}
export const getUsefulKind3EventData = (data:Event):string[]=>{
const idsToSearch = data.tags.filter(obj=>obj[0]=="p").map(obj=>obj[1]);
return idsToSearch
}
export type eventKindType = UserData|string[]
type kindsDictionaryType = {[key:number ]:(event:Event)=>eventKindType};
//kindDictionary[0](event)
const kindsDictionary:kindsDictionaryType ={
0:getUsefulKind0EventData,
3:getUsefulKind3EventData
};
export default kindsDictionary;
Eu utilizaria a tipagem acima pra representar o retorno nesse modelo de dados.
import convertEventKind, { eventKindType } from "../../modelConversor/UserData";
function getEvent<K extends number = number>(filters: Filter<K>[]) {
return new Promise((resolve) => {
if (!pool) return;
const toReturn:eventKindType[] = []
const sub = pool.sub([url], filters);
sub.on("event", (event: Event) => {
//Utilizo a função da tipagem aqui.
toReturn.push(convertEventKind[event.kind](event))
});
sub.on("eose", () => {
resolve(toReturn)
sub.unsub();
});
})
}
Porém o retorno desses dados estão recebendo o tipo unknown. https://imgur.com/NVpM5hK
Ai fica a dúvida
Será que consigo fazer com que a Tipagem do retorno da função seja reconhecida baseada no tipo (valor da propriedade) do objeto kindsDictionary?