В течение многих сторонних библиотек и блогов/рекомендаций по эффективной практике и т.д.... обычно наблюдается синтаксис:
typeof x === 'object' (instead of typeof x == 'object')
typeof y === 'string' (instead of typeof x == 'string')
typeof z === 'function' (instead of typeof x == 'function')
Если оператор typeof уже возвращает строку, что нужно ввести, проверьте также возвращаемое значение? Если typeof (typeof (x)) всегда является строкой, независимо от того, что на самом деле x, то == должно быть достаточно, а === не нужно.
При каких обстоятельствах тип не возвращает строковый литерал? И даже если есть какой-то крайний случай, почему дополнительная проверка типа используется для объекта, строки, функции и т.д.