Для ваших пар подойдет такой пример:
for (const [name, value] of Object.entries(settings)) { console.log(name, value); }
Object.entries создает массив пар из собственных перечисляемых свойств со строковыми именами. Поэтому в обычном объекте настроек вы получите имя и значение без отдельного обращения по имени внутри цикла.
For...in имеет другое правило: он может перечислять унаследованные перечисляемые свойства. Если используете его, собственность нужно проверять отдельно.
Вложенные объекты не разворачиваются автоматически. Они будут значениями соответствующих полей. Не считайте Object.entries универсальным перечислением абсолютно всех свойств: символы и неперечисляемые свойства в такой результат не входят. Для вашего оговоренного набора строковых полей это подходящий и понятный вариант.
Ответить на вопрос