0

Моя компания думает об обновлении с углового 1.5.x до углового 2. Кодовая база написана на ES5, поэтому также обсуждается переход на ES6 или TypeScript.Переход к угловому 2 - ES6 или TypeScript?

TypeScript добавляет некоторые функции ООП по базовому JavaScript, и поскольку текущий код представляет собой скорее функциональный подход к программированию, чем использование стиля ООП (классы и т. Д.), Мне интересно, какие другие преимущества переключения с JS на TS при миграции к угловому 2?

Сколько ООП находится в угловом 2?

+0

Ваш вопрос, как задать, какой IDE использовать. ES6 или TS - это выбор, который необходимо выполнить вашей команде. Факт в том, что TS является надмножеством ES5 с особенностями ES6. Итак, все, что вы можете сделать в ES6, вы, вероятно, можете сделать и в TS, но не наоборот. Что касается ООП: компоненты, директивы и службы - это все классы. – rinukkusu

+0

Стандартным языком de facto для angular2 является TypeScript. Структура написана в TS, документация по умолчанию используется в TypeScript, а код намного удобнее и удобнее писать в TS. Просто используйте TypeScript, на самом деле это не проблема. –

+0

Непонятно, собираетесь ли вы использовать родной ES6 или перевести его с помощью Babel. В последнем случае вы не ограничены ES6 и можете использовать набор функций ES.next (который более или менее такой же, как в TS, OOP-мудрый). Внедрение зависимостей A2 было разработано с учетом TS, оно позволяет в большинстве случаев пропускать '@ Inject' decorator и' this.injectedService = injectedService', это основное преимущество TS в контексте разработки A2. Для ES5/ES6 vs ES.next, [см. Этот ответ] (http://stackoverflow.com/a/39029435/3731501). – estus

ответ

2

Машинопись на самом деле не относится к ООП. ООП ортогонален типам (думаю, Java против Smalltalk). Typcript - это проверка статического типа: используете ли вы строку, в которой вы думаете, что используете массив? Я фактически исправил ошибку в коде сотрудника в этих строках только в прошлую пятницу, когда он использовал цикл for по длине того, что, по его мнению, было массивом (Array.prototype.forEach делает эту ошибку легко найти).

Статическая проверка типов стоит усилий по добавлению аннотаций типа по всей вашей кодовой базе? Это призыв к суждению.

ES6/ESNext, с другой стороны, только плоское предложение предлагает вам лучшие способы написания кода. Я не вижу, как кто-то может сделать аргумент, что

function(arr) { 
    var foo = arr[0]; 
    var bar = arr[1]; 
    return foo + bar; 
} 

лучше

([foo, bar]) => foo + bar 

же для многих других функций, если вы пишете в функциональном стиле ваших кодовый (как у меня) есть вероятно, засорены

Object.keys(someObj) 
    .map(k => someObj[k]) 
    .filter... 

Теперь у вас только есть Object.values. Плюс около миллиона других функций.

Смежные вопросы