Как TypeScript связан с JavaScript и зачем он был создан?

JavaScript — одна из основных технологий, лежащих в основе Всемирной паутины. Однако все большее число веб-проектов на самом деле пишется на TypeScript. Этот новый язык был создан для решения некоторых проблем с JavaScript, которые затрудняли его использование в больших проектах. Но насколько различаются JavaScript и TypeScript, и чем TypeScript лучше первого.

TypeScript — это надмножество JavaScript. Это означает, что любой код JavaScript также является кодом TypeScript, но обратное неверно. Поэтому, если вы хотите перенести свой проект JavaScript на TypeScript, вы можете просто изменить расширения файлов с .js на .ts, и все будет по-прежнему компилироваться и работать так же, как и раньше. С правильными плагинами у вас также может быть проект, представляющий собой смесь JS и TS. Это делает TypeScript предпочтительным вариантом при миграции по сравнению с другими языками, которые компилируются в JavaScript, но не имеют общего синтаксиса, такого как Kotlin.

TypeScript также иногда называют «типизированным надмножеством», потому что весь дополнительный синтаксис связан с типизацией. В то время как JavaScript является динамически типизированным (проверка типов выполняется во время выполнения), TypeScript является статическим. Параметры, функции и переменные могут быть аннотированы типами, а проверка типов выполняется во время компиляции. В то время как в этом простом примере типы, вероятно, не очень помогают предотвратить ошибки, так как более сложная проверка типов вашего кода оказалась очень полезной для обеспечения правильности кода.

Дополнительным преимуществом оценки типа во время компиляции является то, что TypeScript предлагает улучшенное автозаполнение и предложения, чем JavaScript. Это может позволить разработчикам тратить меньше времени на ввод и поиск документации.

Из-за связи с JavaScript есть некоторые интересные особенности в том, как работает система типов и проверка типов. Генерация кода все равно будет успешной, даже если в коде есть ошибки типа; на самом деле это может быть очень полезно при веб-разработке, поскольку это означает, что вы все равно сможете увидеть большую часть своего сайта, даже если какая-то его часть имеет ошибку типа. Поскольку вся информация о типах стирается при создании JavaScript, типизация на самом деле также не влияет на производительность, на самом деле она никак не влияет на то, как работает ваш код. Из-за этого стирания при работе с машинописным текстом вы должны осознавать, что тип, с которым функция вызывается во время выполнения, может отличаться от типа ее аннотированного параметра.

TypeScript сохраняет «утиную печать» JavaScript. Этот термин относится к фразе «Если это выглядит как утка и крякает как утка, это утка!» и это означает, что значения считаются правильным типом, если они имеют правильные свойства и методы независимо от имени типа.