Можете, пожалуйста, объяснить, что выполняет эта часть кода: (Membership || (Membership = {})
Если в Membership не falsy значение (например объект), то передать ссылку на него в функцию, иначе (если в Membership undefined) присвоить в Membership новый объект и передать ссылку на него в функцию
И почему это всё обёрнуто в функцию?
Сложно сказать, думаю кто-то скопировал код
отсюда в код
сюда и не стал париться, так как в обоих случаях есть declaration merging, о котором уже написал
Aetae
А вообще стоит узнать про
const enum, который не оставляет артефактов в JS и в подавляющем большинстве случаев его достаточно.