A
A
Alexey Savchuk2017-07-17 05:27:08
Angular
Alexey Savchuk, 2017-07-17 05:27:08

What is the correct way to specify noEmitHelpers for TypeScript?

All TypeScript configuration examples for Angular have "noEmitHelpers" set to "true".
But, as far as I understand, in this case, some modern TypeScript / JavaScript features (for example, async / await) will not be available.
Is it possible to set the value of "noEmitHelpers" to "false" and what does it mean?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
Станислав Макаров, 2017-07-17
@devpreview

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

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question