Чи варто використовувати машинопис? або я можу просто використовувати ES6? [зачинено]


286

Моя щоденна робота - це розробник клієнтів, що використовує AngularJS. Ми оцінюємо, чи хочемо ми з TypeScript. Я провів декілька досліджень на машинопис і майже кожен пакет JavaScript, який мені потрібно, повинен мати файли типів визначення. Я виявив, що це не дуже зручно, особливо якщо я хотів би спробувати щось нове, а у них немає визначення для цього. Це справді засмучує. (Навіть поточне визначення jQuery створює мені деякі проблеми, якщо я хочу використовувати бета-версію 1.5). Я почав дивитися на ES6 і він схожий на TypeScript. Чи варто просто використовувати ES6 замість цього? Крім того, я чув, що в куті 2 буде повна підтримка TypeScript, чи це буде однією з причин, що я повинен залишатися з ним?


11
Вам не потрібен файл визначення кожного разу для чогось нового. Якщо ви хочете використовувати бібліотеку без типу, ви можете писати, declare var MyNewLibraryName: any;тоді використовуйте її як завгодно, без компілятора скаржитися.
Девід Шеррет

2
З голосами, щоб закрити це питання, я б запропонував задати більше плюсів / мінусів, пов’язаних із кожним підходом, а не запитувати, який є кращим, таким чином ви запитуєте інформацію, а не думки.
Брокко

typecript оновлення функції нової версії JavaScript перед усіма основними браузерами, мій варіант - використовувати typecript і компілювати до версії javascript на основі ваших цільових браузерів. (звичайно, навіть легко перекласти javascript однією версією на іншу)
bhv

Якщо ви не турбуєтесь про те, що зможете правильно ввести код, і ви хочете, щоб Immutable.js було дуже важко працювати, і ви любите писати котельну, і ви думаєте, що DRY завищена, і ви насправді вважаєте за краще повторювати себе, і ви Ви любите писати визначення типів для коду інших людей, і вам подобається керувати типами, коли вони змінюються під вами, і вам подобається перемикатися між двома різними текстовими редакторами, оскільки там нічого не працює належним чином, а потім виберіть Typescript. Але якщо ви здорові, виберіть ES6 / 7 та Babel.
gargantuan

Відповіді:


114

Я використовую Typescript у своєму поточному кутовому проекті вже близько року-півтора, і хоча раз у раз є кілька питань з визначеннями, проект „ DefinitelyTyped ” робить дивовижну роботу в ногу з останніми версіями найпопулярніших бібліотек.

Сказавши, що існує певна крива навчання при переході від ванільного JavaScript на TS, і ви повинні врахувати здатність вас і вашої команди здійснити цей перехід. Крім того, якщо ви будете використовувати кутовий 1.x, то більшість прикладів, які ви знайдете в Інтернеті, зажадають перевести їх із JS на TS, і загалом зараз не дуже багато ресурсів для використання TS та кутового 1.x разом. .

Якщо ви плануєте використовувати кутовий кут 2, є багато прикладів використання TS, і я думаю, що команда продовжить надавати більшу частину документації в TS, але вам, звичайно, не потрібно використовувати TS, щоб використовувати кутовий 2.

ES6 має деякі приємні функції, і я особисто планую ознайомитись з ним, але я б не вважав це мовою, готовою до виробництва. В основному через відсутність підтримки нинішніх браузерів. Звичайно, ви можете написати свій код в ES6 і використовувати транспілер, щоб дістати його до ES5, що, здається, зараз популярне.

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


40
ES6 не підтримує браузер ?? Ви якийсь політик з питань MS? І машинопис, і ES6 потребує транспілятора. Це означає, що ви не запускаєте TS або ES6 в Інтернеті, а використовуєте щось на зразок Babel. TS в Angular 2 додали лише для політичного зв язку btw Google та MS
STEEL

40
@STEEL Ні, не політик з MS, ви просто відповідаєте на відповідь, яку я залишив понад рік тому, коли підтримка ES6 була дуже обмеженою. І ви вільні думати, що рішення TS і Angular 2 було політичним, але це не змінює мою думку про те, що воно було написано для цієї мови, і команда Angular2 заохочує його використання.
Кент Купер

18
Це з 2 років тому, але час показав, як стандарт зрештою переважає. Більшість браузерів на сьогодні підтримує ES6 на самому світі. Класи, функції зі стрілками тощо. Врешті-решт, ми дістанемося до того, що веб-переглядачі будуть підтримувати достатньо гідну версію javascript, щоб зробити зайві транслілери. Типовому сценарію завжди потрібен транспілер. Чому це важливо? адже наш обов'язок веб-розробників - просувати Інтернет вперед, і це підтримуючи стандарти
monzonj

3
Це простір ES6, який не підтримує фактичну безпеку типу "компіляція". У ES6 є багато чудових речей, але той факт, що я не можу сказати, "цей аргумент - це рядок (або екземпляр класу X), чорт забирай", і бути в змозі перевірити це як частину вашого процесу збирання, все ще погано великі програми (аналогічно передньому та задньому).
Бред Пібоді

Ви можете використовувати такий інструмент, як Тип потоку, щоб додати підтримку типу до ES6, якщо дуже хочете. Поки ES6 не стане повсюдним у всіх браузерах, ваш ланцюжок інструментів потім буде складатися з Flow-> ES6-> Babel, що є великою кількістю непрямих, але це робить роботу, і я думаю, що це дуже популярна мережа в даний час.
Prahlad Yeri

660

Дерево рішень між ES5, ES6 та TypeScript

Ви не проти мати збірку?

  • Так - Використовуйте ES5
  • Ні - продовжуйте йти

Ви хочете використовувати типи?

  • Так - Використовуйте TypeScript
  • Ні - використовуйте ES6

Детальніше

ES5 - це JavaScript, який ви знаєте та використовуєте в браузері сьогодні, він є тим, що він є, і не вимагає кроку збирання, щоб перетворити його на те, що працюватиме в сучасних браузерах.

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

TypeScript надає додаткову систему набору тексту, використовуючи функції майбутніх версій JavaScript (ES6 та ES7).

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


5
Це не так просто. Існує маса інших факторів.
RaoulRubin

16
@RaoulRubin Це правда, існує багато інших факторів, але для закритого питання тут, принаймні, є відправною базою для процесу прийняття рішення
Брокко

1
PS - ES6 + FlowType = Любов :)
Red2678

3
@RavinderPayal має цікаве запитання, Брокко. З ринкової точки зору, то , що це значення TS проти ES5 або ES6 та іншого уздовж цих ліній?
Дж. Уеллс

3
Гаразд, тому цій посаді пару років /. Давайте вперед до сьогодні, 28 вересня 2017 року. Чи більшість браузерів підтримує ES6?
Дьюї Бенкс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.