Рассмотрим:
enum Colors {
Red,
Green,
Blue
}
Он преобразуется в это:
var Colors;
(function (Colors) {
Colors[Colors["Red"] = 0] = "Red";
Colors[Colors["Green"] = 1] = "Green";
Colors[Colors["Blue"] = 2] = "Blue";
})(Colors || (Colors = {}));
В большинстве вопросов об этом ответе в перечислены в TypeScript: что делает код JavaScript?.
Я цитирую ответы:
Это "немедленно выполняющая функция"
И далее по теме:
Думаю, они могли бы просто пойти:
var Colors; Colors || (Colors = {}); Colors[Colors["Cyan"] = 3] = "Cyan"; // ...
и пропустите закрытие, но, возможно, Im все еще что-то пропустил.
Итак, остается вопрос: зачем обертывать это в немедленно выполняющейся функции?