Как правильно указывать noEmitHelpers для TypeScript?

Во всех примерах конфигурации TypeScript для Angular "noEmitHelpers" указан "true".
Но, насколько я понимаю, в таком случае будут недоступны некоторые современные фичи TypeScript / JavaScript (например, async / await).

Можно ли ставить значение "noEmitHelpers" в "false" и чем это грозит?
  • Вопрос задан
  • 299 просмотров
Решения вопроса 1
Можно ставить. Это не значит, что "будут недоступны некоторые современные фичи", т.к. тогда не было бы доступно даже extends для классов, а не только современные фичи.

Если вы поставите noEmitHelpers, то компилятор просто перестанет вставлять хелперы в начало каждого скомпиленного модуля, но продолжит использовать хелперы при необходимости. Для вас это значит, что вы можете добавить хелперы самостоятельно иным способом, например через глобальные переменные. Мы делали такую вещь с помощью webpack.ProvidePlugin, который автоматически инжектил нужные реквайры при использовании TS-ом хелперов (сам компилятор TS не догадывался об этом, он просто не эмитил хелперы в каждом файле). Это всё делалось с целью экономии, чтобы не иметь код хелперов в начале каждого скомпиленного файла.

Затем в 2.1 появилась опция importHelpers, которую мы долго ждали, и мы сразу перешли на неё, чего и вам советую. В этом случае компилятор вставляет код импорта реализации хелперов из специального пакета tslib, который вам нужно будет добавить в runtime-зависимости в package.json если вы захотите использовать опцию importHelpers.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы