Если код нужен позже по событию, загрузите его динамически в нужный момент. defer откладывает исполнение до разбора HTML, но не до произвольного пользовательского действия.
В JavaScript есть undefined, null, boolean, number, bigint, string, symbol и object. Number — число двойной точности, BigInt — целое произвольной доступной длины.
В обычном браузерном JavaScript стандартного API для принудительного запуска GC нет. Время сборки выбирает движок; отладочные возможности окружения не являются переносимым API.
Опишите, какие ошибки TypeScript помог обнаружить и какие трудности возникли при описании данных и библиотек. Впечатления лучше подкрепить реальным примером.
Полностью воспроизвести Proxy и поведение слабых ссылок обычным полифилом нельзя: они требуют возможностей движка. Частичная эмуляция не равна совместимости со стандартом.