TypeScript vs JavaScript

Что такое JavaScript ?

JavaScript был представлен в 1995 году как слабо типизированый скриптовый язык разработанный компанией Netscape чтобы добавить больше динамики в HTML страницы. Но Веб сильно изменился с тех пор. Что было простенькими страничками с одной формой в 1995 теперь большие и сложные веб-приложения. JavaScript изначально не был создан для разработки сложных корпоративных приложений. Сейчас большинство браузеров поддерживают ECMAScript 5 стандарт. То есть обычно когда кто-то говорит «JavaScript» он имеет в виду язык стандарта ES5. Хотя ES5 не последняя версия стандарта. В 2015 году был введен 6 стандарт ES6, в 2016 — ES7 или ES 2016. Но не все браузеры поддерживают новые фичи в полной мере.

Проблему несовместимости можно решить с помощью транспайлеров, таких как Babel или с помощью языка TypeScript.

Что такое TypeScript ?

TypeScript это язык который компилируется в JS, поддерживает статическую типизацию, дает более расширенные возможности для программирования в объектно ориентированном стиле.

Сильные стороны TypeScript

Главным аргументом в пользу TypeScript есть строгая статическая типизация. Так в чем же разница между статической и динамической типизацией При использовании статической типизации, требуется меньше документации, по сути ваш код и есть лучшая документация. Для большой части кода, очень полезно что типы аргументов и результатов выполнения функции задокументированы, всегда точно известно что ожидать на входе и выходе.

Более того когда я просматриваю свой старый JavaScript код, очень многие нюансы мне не понятны, нужно детально изучить цепочку вызовов чтобы понять какой тип результата вернется в определенной функции. Конечно можно использовать JSDoc, который позволяет писать inline документацию, но ее нужно постоянно обновлять. При использовании TypeScript у вас только один источник истины.

Также преимуществом статической типизации является возможность автокомплита в редакторах кода. Написание кода становиться проще, так как не нужно постоянно лезть в документацию и искать как называется нужный вам метод.

Также рефакторинг становится не таким болезненным, так как компилятор скажет вам, если что то сломалось, что позволит избежать ошибок время выполнения. Но все же есть парочку недостатков нужно больше времени на обучения и написания кода на начальных этапах появляется дополнительный слой сложности ограничивается свобода мысли, нельзя просто так добавить свойство, или присвоить значение другого типа. строгая типизация не гарантирует отсутствия ошибок в программе

Сильные стороны JavaScript

  • скорость и простота разработки
  • огромное количество доступных библиотек
  • можно создавать и тестировать код, без сборки

Вывод — TypeScript vs JavaScript

Если вы не знакомы с TypeScript / ES6 / ES7 и вам нужно написать небольшое веб-приложения, из пару страниц, самым быстрым способом, это сделать будет использования обычного JavaScript(ES5). Но также стоит заметить, что ES5 считается устаревшей(deprecated) версией JavaScript, по этому лучше для вашего проекта и карьеры в целом, углубится в изучения новых стандартов ES6, ES7 и языка TypeScript. По началу вас будут пугать все эти сборщики и транспайлеры, но ваши затраты на обучения оправдают себя если вы хотите остаться в тренде веб разработки. Если вы работаете в команде, и вам нужно создать масштабируемый продукт, который нужно будет поддерживать длительное время, напишите его на TypeScript. Так как сейчас ES6 / ES7 нужно транслировать в ES5, то можно использовать TypeScript вместо Babel, таким образом вы будете поддерживать безопасность типов и ваш код будет работать в всех браузерах.