JavaScript-программисты обычно используют их как взаимозаменяемые, хотя между ними и есть тонкое семантическое различие, достойное упоминания: undefined означает, что нечто еще не было определено, а null показывает отсутствие значения (как если бы вы пытались вычислить значение, но сталкивались при этом с ошибкой). Это всего лишь условности, и TypeScript вас не принуждает к их соблюдению, однако будет полезным понимать разницу.
Из-за всех ловушек, которые затрудняют безопасное использование перечислений, рекомендую держаться от них подальше.
Если же на их использовании настаивают ваши коллеги и их никак нельзя переубедить, то обязательно внедрите специальные правила TSLint, предупреждающие об использовании числовых значений и неконстантных перечислений.
Enum Enum является способом перечисления возможных значений типа. Он представляет собой неупорядоченную структуру данных, которая сопоставляет ключи и значения.
Кортежи являются подтипами array. Они позволяют типизировать массивы фиксированной длины, в которых значения каждого индекса имеют конкретные известные типы
1. Объявление объектного литерала (вроде {a: string}), называемого также формой. Используйте ее, когда знаете, какие поля будет иметь объект, или когда все его значения будут иметь один тип.
2. Объявление пустого объектного литерала ({}). Старайтесь его избегать.
3. Тип object. Используйте его, когда вам просто нужен объект и неважно, какие у него поля.