TypeScript имеет конфигурацию target со многими значениями, такими как esnext, es2015, es6 и т. д. (очень запутанно)
Текущая версия NodeJ (11.11.0) поддерживает многие новые функции JavaScript. Можно ли настроить таргетинг esnext на TypeScript? это будет работать?
Если нет, то какое право target использовать при нацеливании на nodeJs 11.11.0
Редактировать:
Благодаря @Seblor мы знаем, что esnext очень динамичен, и TC39 может добавлять функции по своему усмотрению. Он представляет собой следующую версию JavaScript, над которой ведется работа (относительно согласования функций)
Уточненный вопрос должен быть: Согласно текущей версии NodeJs (11.11.0) и текущей версии TypeScript (3.3), можем ли мы использовать esnext вместо target?
Похоже, что esnext очень динамичен и всегда может измениться, но TypeScript поддержка esnext статична (для каждой версии)
esnext «изменится» после выпуска новой версии ECMAScript.





Глядя на узел.зеленый, поддержка ES2018 кажется полной в Node 11.11.0, поэтому вы сможете без проблем установить ES2018 в качестве цели.
Вы можете испытать удачу, используя ЕС2019 или даже ESNСледующий, так как поддержка выглядит достаточно хорошо. Однако я не знаю, будет ли typescript использовать еще не реализованные функции, если вы используете ESNext в качестве цели (например, частные свойства).
Лично я бы придерживался ES2018, так как не вижу необходимости настаивать на ESNext.
@RTW На самом деле я смотрел на этап 3, который (в то время: web.archive.org/web/20190318210754/https://node.green) был в основном покрыт. Нет смысла использовать этап 2 (или ниже), поскольку они, вероятно, могут быть изменены.
Итак, ответ (как обычно) Зависит от!
Это зависит от функций, которые вы планируете использовать. Версия TypeScript, target на tsconfig.json и версия NodeJS.
Прежде чем использовать функцию JavaScript, необходимо проверить две вещи:
Вы должны посмотреть на этот стол и посмотреть на столбец целевой среды, в моем случае это Столбец NodeJs. И убедитесь, что ячейка зеленого цвета. Красный означает, что вы не можете запустить эту функцию в этой среде.
Убедитесь, что вы можете скомпилировать свой код с помощью TypeScript. Если вы можете скомпилировать код с помощью TypeScript, все в порядке. Обратите внимание, что вы НЕ можете рассчитывать на Столбец TypeScript. Красная ячейка означает, что скомпилированный код не будет работать на предыдущей версии JavaScript...
Например BigInt:
TypeScript с target: "esnext" скомпилирует (без проблем) код с bigint (пока ячейка поддержки будет красной), и вы сможете запустить код JavaScript с bigint на NodeJS 11
Обратите внимание, что в левом верхнем углу есть группа версий ECMAScript. вы можете пойти ниже, чем esnext
На основе Сопоставление узла и цели в вики TypeScript "es2018" — это правильное сопоставление для Node 10, "es2019" — правильное сопоставление для Node 12. Кажется, что версии Node, отличные от LTS, не документированы, но, учитывая эту информацию, я чувствую, что "es2018" является самым безопасным цель.
Здорово, что эта информация есть на вики TypeScript. Спасибо!
es2015 и es6 одинаковы. esnext — следующая версия на момент написания. Подробнее здесь: en.wikipedia.org/wiki/ECMAScript