Eu tenho uma união e um objeto como este:
type FilterType = 'equals' | 'notEquals';
const labelMap: {[filterType in FilterType]: string} = {
equals: 'Equals',
notEquals: 'Not Equals',
} as const;
E eu gostaria de derivar disto o equivalente a:
type Labels = 'Equals' | 'Not Equals';
O mais próximo que consegui chegar disso foi:
type Labels = labelMap[keyof labelMap];
Isso funciona se eu remover a {[filterType in FilterType]: string}
anotação, mas gostaria de mantê-la para que, se adicionarmos novos filtros, sejamos forçados a adicionar um rótulo.
Como posso anotar o tipo das chaves do objeto e também extrair os valores? Eu poderia fazer os valores seu próprio tipo explícito e então usar:
const labelMap: {[filterType in FilterType]: ValueType} = {
Mas eu preferiria mantê-lo centralizado, se possível, para que você não precise ir a vários lugares só para adicionar um novo filtro.