Перечисления в TypeScript: что делает код JavaScript?

Следующий TypeScript:

enum PrimaryColors { Red, Green, Blue };

Создает следующий JavaScript:

var PrimaryColors;
(function (PrimaryColors) {
    PrimaryColors[PrimaryColors["Red"] = 0] = "Red";
    PrimaryColors[PrimaryColors["Green"] = 1] = "Green";
    PrimaryColors[PrimaryColors["Blue"] = 2] = "Blue";
})(PrimaryColors || (PrimaryColors = {}));
;

Мне стыдно признаться, что я неЯ не понимаю, что делает JavaScript.

Функция в скобках присваивает строковые значения, используя другое присваивание в качестве индекса / ключа. Я не видел ничего подобного раньше.

И какова цель (PrimaryColors || (PrimaryColors = {}) после функции?

Если ответ заключается в том, чтобы правильно выучить JavaScript, я с готовностью приму его, при условии, что он снабжен предлагаемым источником, который четко объясняет, что я вижу здесь.

Ответы на вопрос(3)

Ваш ответ на вопрос