#node.js #typescript
#node.js #typescript
Вопрос:
TypeScript имеет target
конфигурацию со многими значениями, такими как esnext
, es2015
es6
и т.д. (очень запутанный)
Текущая версия NodeJS (11.11.0) поддерживает многие новые функции JavaScript. Можно ли настроить таргетинг esnext
на TypeScript? будет ли это работать?
Если нет, то что правильно target
использовать при таргетинге на NodeJS 11.11.0
Редактировать:
Благодаря @Seblor мы знаем, что esnext
это очень динамично, и TC39 может добавлять функции по своему усмотрению. Она представляет следующую версию JavaScript, над которой ведется работа (в отношении согласования функций)
Уточненный вопрос должен быть таким: в соответствии с текущей версией NodeJS (11.11.0) и текущей версией TypeScript (3.3) можем ли мы использовать esnext
как target
?
Комментарии:
1. es2015 и es6 одинаковы. esnext — это следующая версия на момент написания. Более подробная информация здесь: en.wikipedia.org/wiki/ECMAScript
2. Выглядит
esnext
очень динамично и всегда может измениться, ноTypeScript
поддержкаesnext
статична (для каждой версии)3. esnext «изменится» после выпуска новой версии ECMAScript.
Ответ №1:
На основе сопоставления целевого узла на TypeScript wiki, "es2018"
является правильным сопоставлением для узла 10, "es2019"
является правильным сопоставлением для узла 12. Кажется, что версии Node, отличные от LTS, не документированы, но, учитывая эту информацию, я чувствую, что "es2018"
это самая безопасная цель.
Комментарии:
1. Здорово, что эта информация есть в TypeScript wiki. Спасибо!
Ответ №2:
Глядя на node.green, поддержка ES2018, похоже, в Node 11.11.0 полная, поэтому вы должны быть в состоянии установить ES2018 в качестве цели без проблем.
Вы можете испытать свою удачу, используя ES2019 или даже ESnext, поскольку поддержка выглядит достаточно хорошо. Однако я не знаю, будет ли typescript использовать еще не реализованные функции, если вы используете ESnext в качестве цели (например, частные свойства).
Лично я бы придерживался ES2018, поскольку не вижу необходимости настаивать на ESnext.
Комментарии:
1. @RTW На самом деле я смотрел на Этап 3, который был (на тот момент : web.archive.org/web/20190318210754/https://node.green ) в основном покрыто. Нет реального смысла использовать этап 2 (или ниже), поскольку они, вероятно, подвержены изменениям
Ответ №3:
Хорошо, итак, ответ (как обычно) зависит! Это зависит от функций, которые вы планируете использовать. Версия TypeScript, target
на tsconfig.json
и версия NodeJS.
Перед использованием функции JavaScript необходимо проверить две вещи:
-
Вы должны посмотреть на эту таблицу и посмотреть на столбец вашей целевой среды, в моем случае это столбец NodeJS. И убедитесь, что ячейка зеленая. Красный цвет означает, что вы не можете запустить эту функцию в этой среде.
-
Убедитесь, что вы можете скомпилировать свой код с помощью TypeScript. Если вы можете скомпилировать код с помощью TypeScript, все в порядке. Обратите внимание, что вы не можете рассчитывать на столбец TypeScript. Красная ячейка означает, что скомпилированный код не будет выполняться на предыдущей версии JavaScript…
Например BigInt
:
TypeScript с target: "esnext"
без проблем скомпилирует код с bigint
(пока ячейка поддержки красная), и вы сможете запустить код JavaScript с bigint на NodeJS 11
Обратите внимание, что в левом верхнем углу находится ECMAScript
группа версий. вы можете опуститься ниже, чем esnext