I have data structure similar to:
const Data = {
key1: {
key1a: '1a',
key1b: '1b',
},
key2: {
key2a: '2a',
key2b: '2b',
},
keyN: {
keyNa: 'Na',
keyNb: 'Nb',
},
}
And I want to generate a type for the list of all subkeys like this:
type DataSubkeysV1 = 'key1a' | 'key1b' | 'key2a' | 'key2b' | 'keyNa' | 'keyNb';
type DataSubkeysV2 = keyof typeof Data['key1'] | keyof typeof Data['key2'] | keyof typeof Data['keyN'];
How to write a type definition for any number of top-level keys?
I've tried a generic type:
type DataSubkeysV3<K extends keyof typeof Data> = keyof typeof Data[K]
But it requires an argument. And I want a type that can be used like DataSubkeysV1.