Варто Typescript зусиль?

image
Typescript — це скриптова мова, компільований в JavaScript. Розробка Microsoft, яка, на сьогоднішній день, встигла завоювати і фанатів і недоброзичливців. Головне питання для початківців і не тільки: «Навіщо він мені потрібен?».

Оскільки статей, що описують переваги і недоліки, опис мови та приклади роботи — валом, я хотів би описати практичні висновки при роботі в досить великому додатку.

Почнемо з основних плюсів:

  1. Строга типізація
  2. Читабельність коду
  3. Більш легкий перехід з світу суворої типізації, ніж на JavaScript напряму, в якому править бал Динаміка
  4. Зворотна сумісність з JavaScript
  5. Широка підтримка IDE
Строга типізація
Дозволяє більш повно описувати властивості та методи об'єктів і класів, з-за чого зникає необхідність, яка, особисто мене, страшенно дратувала, робити перевірку всіх, що входять у метод або функцію, аргументів:

function checkAllMyArgsAgain(check, me, please) {
if(check && me && please) {
if(check instanceof CheckObject){
console.log('Урааааа!');
} else {
console.log('І знову виняток...')
}
if(me){ } // І так далі.......
}
}

У будь-якому випадку, TypeScript сильно спрощує цей процес:

function checkAllMyArgsAgain(check: CheckObject, me: MeObject, please: string): string {
return 'Яка перевірка аргументів? Ви про що? ';
}

І ми плавно перейдемо до другого пункту, якому перший сильно сприяє:

Читабельність коду
З прикладу вище, очевидно, що читати код на TypeScript буде простіше, через відсутність нагромаджень коду, характерні Javascript.

Можна уявити, на що перетвориться код, написаний на JavaScript, через якийсь час…


function checkMe(check, me) {
if(check && me) {
if(check){ ... }
if(me){ ... }
}
}

function andCheckMe(check, me) {
if(check && me) {
if(check){ ... }
if(me){ ... }
}
}

function andCheckMeToo(check, me) {
if(check && me) {
if(check){ ... }
if(me){ ... }
}
}

Проти:


function checkMe(check: CheckObject, me: MeObject) {
console.log('Ну круто ж!');
}
function andCheckMe(check: CheckObject, me: MeObject) {
console.log('пісня');
}
function andCheckMeToo(check: CheckObject, me: MeObject) {
console.log('Писати легко і з задоволенням');
}

У деяких випадках, JS, можна зменшити шкоду шляхом абстракцій, але в цілому, TS сильно попереду з даного питання.

Більш легкий перехід у світ JS світу статики
Багато проявляють інтерес до JS, але їх відлякує певна хаотичність і непередбачуваність мови. Тут Вам сильно допоможе TS, який дозволяє писати JS, більш звичним і зрозумілим шляхом.

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

Широка підтримка IDE
TypeScript, на даний момент, має підтримку в будь-якій популярній IDE, включаючи IDEA, WebStorm, Sublime, Atom, і так далі. Відповідно, змінювати улюблену середовище розробки не доведеться.

Тепер опишемо основні мінуси:

  1. Строга типізація
  2. Компілятор
  3. Debug
  4. А раптом помре?
Строга типізація
Цей пункт працює як на благо, так і на шкоду, тому що необхідно описувати всі типи для всіх об'єктів, класів, змінних, і іже з ними, що було не властиво JavaScript раніше.

Але куди більше зло — міграція існуючих популярних JS рішень на TS. Бачте, для кожної портований либы необхідно описати .d.ts файл, в якому зберігаються всі повертаються типи і опис усіх методів. Впевнений, що портування таких монстрів, як jQuery, вимагало чимало присідань.

Компілятор
Він істотно зменшує ймовірність «тупий» помилки, типу пропущених ком і неправильно написаних імен змінних, але також вбиває всю принадність JS, коли більшу частину рішень можна було написати на колінах і перевірити в консолі браузера.

Не варто забувати, що час від часу, доведеться оновлювати і сам компілятор, оскільки мова розвивається і, рано чи пізно, з'явиться потреба оновити існуючу версію компілятора, а, можливо, і самого коду.

Debug
Природно, кожному розробнику необхідно розуміти, як швидко і ефективно, перевіряти код на помилки, ловити і виправляти баги. І, насамперед, треба розібратися, як це процес налагодити в TypeScript. Існує безліч гайдів для різних IDE: WebStorm і Visual Studio про те, як все це справа налаштувати в редакторах коду і ефективно працювати, але з JS цього робити не треба було, бо як можна було запустити код наставити точок зупину всередині редактора або переглядача і спокійно дебажити. З TS доведеться трохи попотіти.

А раптом помре?
Це цікавий і серйозне питання, тому як стандарти JS йдуть в ногу з часом і інтегрують в сам мова багато чого, що було корисно в TS: класи, стрілочні функції, і так далі. Рано чи пізно, всі корисні функції TS буде так чи інакше перенесені в стандарт мови і TS повісить бутси на цвях. А якщо хлопці з Microsoft вирішать, що їм це не потрібно і повністю залишать TS на волю open-source? Зрозуміло, що будучи відкритим продуктом, TS не втратити підтримки зовсім — завжди знайдуться ентузіасти, але підтримка такого гіганта як Microsoft, ніколи не завадить.

Знову ж сам Microsoft, як основного розробника, багато відносять до мінуса, бо репутація у гіганта досить спірна: Skype, Nokia, Windows Phone, Windows Vista, і так далі.

Сподіваюся, що допоміг комусь з рішенням про даному питанні, або ж змусив замислитися про доцільність переходу.

Усім спасибі, всі вільні!
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.