type NonNullObject = {} & object;
function getDeepKeys(obj: NonNullObject) {
let keys: string[] = [];
for (const key in obj) {
if (typeof obj[key] === 'object') {
const subKeys = getDeepKeys(obj[key]);
keys = keys.concat(subKeys.map((subKey) => `${key}.${subKey}`));
} else {
keys.push(key);
}
}
return keys;
}