reflejando literales de propiedades anidadas en TypeScript
Soy nuevo en TypeScript/JavaScript y estoy tratando de entender algunas cosas. Tengo un tipo definido de la siguiente manera:
declare module "Names" {
export = Names;
const Names: {
readonly name1: string;
readonly name2: string;
readonly name3: {
readonly name3SubName1: string;
...
Estoy intentando extraer los nombres y valores de todas las cadenas del objeto Names en tiempo de ejecución y Names puede tener anidamiento a varios niveles de profundidad.
He podido obtener las propiedades de "nivel superior" iterando a través de los resultados de
Object.keys(Names)
pero dado que el valor de retorno de esa llamada son cadenas, no puedo profundizar más. En este ejemplo me gustaría acceder a name3.name3SubName1. También he probado combinaciones de hasOwnProperty y getOwnProperty, pero no puedo obtener ninguna de las propiedades anidadas. ¿Hay alguna práctica común para "reflejar" objetos de propiedad en objetos TS que pueda manejar anidamientos?