Чи варто використовувати машинопис? або я можу просто використовувати 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.