Помогите решить задачку [найти сумму или четных или нечетных или всех подряд натуральных n чисел в зависимости от значения аргумента]

Я с такими задачами разбирался с помощью “прогона” на бумажке нескольких конкретных случаев. (и до сих под использую этот метод).

Решение “в лоб”, основываясь на твоем скелете. Идем по всем числам до number. Для каждого числа смотрим чего там в type, и в зависимости от значения уже проверяем нужно ли число добавлять к сумме или нет. Для неожиданного значения в type даем ошибку (не критично, но правильнее с точки зрения моделирования функций).

const getSumOfNumbers = function (number,type = "odd") { 
    let sum =0;
    for (let i = 0; i <= number; i++) {
      if (type === "even") {
        // условие добавления и добавление если надо
      } else if (type === "odd") {
         // условие добавления и добавление если надо
      } else if (type === "") {
         // добавление безусловно
      } else {
        // может бросить тут исключение так как агумент неожидаемого значения
        // throw new Error('Unexpected argument value')
      }
    }
  return sum
}

Есть вериант не в лоб. В котором можно исходить из того что суть четных и нечетных чисел в инкременте на двойку только от разного основания (нечетные 1, 3, 5, 7 …, четные 0, 2, 4, 6, 8). Можно подумать и описать подготовку к циклу так что цикл будет итерировать по четным или нечетным или по всем числам.

Чтобы реализовать подход выше, нужно вынести шаг цикла и число с которого цикл стартует в переменные. И исходя из значения type задать начальные значения в вынесенные переменные. Думаю это единственный неочевидный момент, остальное можно додумать: там код будет без сюрпризов.

let step
let start
// вместо комментария - логика задачи начальных значений ...
for (let i = start; i <= number; i += step) {
   // логика подсчета суммы  в теле цикла ...
}