Должен ли я использовать машинопись? или я могу просто использовать ES6?

233

Моя ежедневная работа - это клиентский разработчик с помощью AngularJS. Мы оцениваем, хотим ли мы пойти с TypeScript. Я провел некоторое исследование по typescript, и почти каждый пакет JavaScript, который мне нужен, должен иметь файлы типов определений. Я обнаружил, что это не очень удобно, особенно если я хотел бы попробовать что-то новое, и у них нет определения для него. Это действительно расстраивает. (Даже текущее определение jQuery дает мне некоторые проблемы, если я хочу использовать typescript 1.5 beta). Я начал смотреть на ES6, и он похож на TypeScript. Должен ли я просто использовать ES6? Кроме того, я слышал, что angular 2 будет иметь полную поддержку TypeScript, это будет одна из причин, по которой я должен остаться с ней?

  • 11
    Вам не нужен файл определения каждый раз для чего-то нового. Если вы хотите использовать библиотеку без типа, то вы можете написать declare var MyNewLibraryName: any; затем используйте его по своему усмотрению без жалоб на компилятор.
  • 2
    С голосами, чтобы закрыть этот вопрос, я бы предложил спросить больше плюсов / минусов, связанных с каждым подходом, а не спрашивать, что является лучшим, таким образом, вы запрашиваете информацию, а не мнения.
Показать ещё 2 комментария
Теги:
ecmascript-6

2 ответа

95
Лучший ответ

Я использую Typescript в моем текущем проекте angular около полутора лет и, хотя есть несколько проблем с определениями, время от времени DefinitelyTyped делает замечательную работу по поддержанию последних версий самых популярных библиотек.

Сказав, что существует определенная кривая обучения при переходе с ванильного JavaScript на TS, и вы должны учитывать способность вас и вашей команды совершать этот переход. Также, если вы собираетесь использовать angular 1.x, большинство примеров, которые вы найдете в Интернете, потребует перевода их из JS в TS, и в целом нет много ресурсов на использование TS и angular 1. x вместе прямо сейчас.

Если вы планируете использовать angular 2, есть много примеров использования TS, и я думаю, что команда продолжит предоставлять большую часть документации в TS, но вам, разумеется, не нужно использовать TS для использования angular 2.

В ES6 есть несколько приятных функций, и я лично планирую ознакомиться с ним, но на данном этапе я бы не стал считать это готовым к производству языком. В основном из-за отсутствия поддержки со стороны текущих браузеров. Подробнее см. . Конечно, вы можете написать свой код в ES6 и использовать транспилер, чтобы получить его на ES5, который, похоже, сейчас очень популярен.

В целом, я думаю, ответ будет сводиться к тому, что вы и ваша команда усердно учитесь. Я лично думаю, что и TS, и ES6 будут иметь хорошую поддержку и длинные фьючерсы, я предпочитаю TS, потому что вы, как правило, быстрее получаете языковые функции, и сейчас поддержка инструментария (на мой взгляд) немного лучше.

  • 36
    ES6 не получил поддержку браузера ?? Вы какой-то политик MS? И для машинописи, и для ES6 нужен транспортер. Означает, что вы не используете TS или ES6 в Интернете, а используете что-то вроде Babel. TS в Angular 2 был добавлен только для политической связи между Google и MS
  • 37
    @ STEEL Нет, не политик MS, вы просто отвечаете на ответ, который я оставил более года назад, когда поддержка ES6 была очень ограниченной. И вы можете думать, что решение TS и Angular 2 было политическим, но это не меняет моего мнения о том, что оно было написано для этого языка, и команда Angular2 поощряет его использование.
Показать ещё 3 комментария
619

Дерево решений между ES5, ES6 и TypeScript

Нельзя ли сделать шаг сборки?

  • Да - Использовать ES5
  • Нет - продолжайте движение

Вы хотите использовать типы?

  • Да - Использовать TypeScript
  • Нет - Использовать ES6

Подробнее

ES5 - это JavaScript, который вы знаете и используете в браузере сегодня, это то, что он есть и не требует шага сборки, чтобы превратить его в нечто, которое будет запущено в современных браузерах.

ES6 (также называемый ES2015) - это следующая итерация JavaScript, но он не работает в современных браузерах. Существует довольно много транспиляторов, которые будут экспортировать ES5 для работы в браузерах. Он по-прежнему является динамическим (читаемым: нетипизированным) языком.

TypeScript предоставляет дополнительную систему ввода, в то время как вытягивает функции из будущих версий JavaScript (ES6 и ES7).

Примечание: многие транспиляторы там (например, babel, TypeScript) позволят вам использовать функции из будущих версий JavaScript сегодня и экспортировать код, который все еще будет работать в современных браузерах.

  • 5
    Это не так просто. Есть много других факторов.
  • 14
    @RaoulRubin Это правда, есть много других факторов, но для закрытого вопроса здесь, по крайней мере, это является отправной точкой для процесса принятия решений
Показать ещё 11 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню