Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

TypeScript - это язык программирования, разработанный и поддерживаемый Microsoft . Это строгая синтаксическая надстройка из JavaScript и добавляет дополнительный статический набор текста на язык. TypeScript предназначен для разработки больших приложений и транскомпилируется в JavaScript. [4] Поскольку TypeScript является надмножеством JavaScript, существующие программы JavaScript также являются допустимыми программами TypeScript.

Машинопись может быть использована для разработки приложений JavaScript как для клиентской стороны и на стороне сервера исполнения (как с Node.js или Дино ). Есть несколько вариантов транскомпиляции. Можно использовать либо средство проверки TypeScript по умолчанию [5], либо компилятор Babel для преобразования TypeScript в JavaScript.

TypeScript поддерживает файлы определений, которые могут содержать информацию о типах существующих библиотек JavaScript, так же как файлы заголовков C ++ могут описывать структуру существующих объектных файлов . Это позволяет другим программам использовать значения, определенные в файлах, как если бы они были статически типизированными объектами TypeScript. Есть файлы заголовков сторонних для популярных библиотек , таких как JQuery , MongoDB и D3.js . Заголовки TypeScript для базовых модулей Node.js также доступны, что позволяет разрабатывать программы Node.js в рамках TypeScript. [6]

Компилятор TypeScript сам написан на TypeScript и скомпилирован в JavaScript. Он находится под лицензией Apache License 2.0 . TypeScript включен как первоклассный язык программирования в Microsoft Visual Studio 2013 с обновлением 2 и более поздних версий, наряду с C # и другими языками Microsoft. [7] Официальное расширение позволяет Visual Studio 2012 также поддерживать TypeScript. [8] Андерс Хейлсберг , ведущий архитектор C # и создатель Delphi и Turbo Pascal , работал над разработкой TypeScript. [9] [10] [11] [12]

История [ править ]

TypeScript был впервые обнародован в октябре 2012 года (в версии 0.8), после двух лет внутренней разработки в Microsoft. [13] [14] Вскоре после объявления Мигель де Икаса похвалил сам язык, но раскритиковал отсутствие полноценной поддержки IDE, кроме Microsoft Visual Studio , которая в то время не была доступна для Linux и OS X. [15] [16] По состоянию на апрель 2021 года есть поддержка в других IDE и текстовых редакторах, включая Emacs , Vim , Webstorm , Atom [17] и собственный код Visual Studio от Microsoft . [18]

В TypeScript 0.9, выпущенном в 2013 году, добавлена ​​поддержка дженериков. [19] TypeScript 1.0 был выпущен на конференции разработчиков Microsoft Build в 2014 году. [20] Visual Studio 2013 Update 2 обеспечивает встроенную поддержку TypeScript. [21]

В июле 2014 года команда разработчиков анонсировала новый компилятор TypeScript, заявив о приросте производительности в 5 раз. Одновременно исходный код, который изначально размещался на CodePlex , был перемещен на GitHub . [22]

22 сентября 2016 года был выпущен TypeScript 2.0; он ввел несколько функций, в том числе возможность для программистов опционально предотвращать присвоение nullзначений переменным [23], иногда называемую ошибкой на миллиард долларов .

TypeScript 3.0 был выпущен 30 июля 2018 года [24], в который были добавлены многие языковые дополнения, такие как кортежи в параметрах покоя и выражения распространения, параметры покоя с типами кортежей, общие параметры покоя и так далее. [25]

TypeScript 4.0 был выпущен 20 августа 2020 года. [26] Хотя 4.0 не внесла никаких критических изменений, в него были добавлены языковые функции, такие как Custom JSX Factories и Variadic Tuple Types. [26]

Дизайн [ править ]

TypeScript возник из-за недостатков JavaScript для разработки крупномасштабных приложений как в Microsoft, так и среди их внешних заказчиков. [27] Проблемы, связанные со сложным кодом JavaScript, привели к спросу на специальные инструменты, упрощающие разработку компонентов на этом языке. [28]

Разработчики TypeScript искали решение, которое не нарушало бы совместимость со стандартом и его кроссплатформенную поддержку. Зная, что текущее предложение стандарта ECMAScript обещает в будущем поддержку программирования на основе классов , TypeScript был основан на этом предложении. Это привело к созданию компилятора JavaScript с набором расширений синтаксического языка, надмножеством, основанным на предложении, которое преобразует расширения в обычный JavaScript. В этом смысле TypeScript был предварительным просмотром того, чего ожидать от ECMAScript 2015. Уникальным аспектом, не включенным в предложение, но добавленным в TypeScript, является необязательная статическая типизация [29], которая позволяет проводить статический анализ языка, что облегчает поддержку инструментов и IDE.

Поддержка ECMAScript 2015 [ править ]

TypeScript добавляет поддержку таких функций, как классы, модули и синтаксис стрелочных функций, как определено в стандарте ECMAScript 2015.

Особенности [ править ]

TypeScript - это языковое расширение, которое добавляет функции в ECMAScript 6. Дополнительные функции включают:

  • Тип аннотации и время компиляции проверка типов
  • Вывод типа
  • Стирание типа
  • Интерфейсы
  • Перечислимые типы
  • Дженерики
  • Пространства имён
  • Кортежи
  • Асинхронный / ожидание

Следующие функции перенесены из ECMAScript 2015:

  • Классы
  • Модули [30]
  • Сокращенный синтаксис "стрелка" для анонимных функций
  • Необязательные параметры и параметры по умолчанию

Синтаксически TypeScript очень похож на JScript .NET , другую реализацию Microsoft языкового стандарта ECMA-262, в которой добавлена ​​поддержка статической типизации и классических объектно-ориентированных языковых функций, таких как классы, наследование, интерфейсы и пространства имен.

Совместимость с JavaScript [ править ]

TypeScript - это строгий надмножество ECMAScript 2015, который сам по себе является надмножеством ECMAScript 5, обычно называемого JavaScript. [31] Таким образом, программа JavaScript также является допустимой программой TypeScript, а программа TypeScript может легко использовать JavaScript. По умолчанию компилятор нацелен на ECMAScript 5, текущий преобладающий стандарт, но также может генерировать конструкции, используемые в ECMAScript 3 или 2015.

С TypeScript можно использовать существующий код JavaScript, включать популярные библиотеки JavaScript и вызывать код, сгенерированный TypeScript, из другого JavaScript. [32] Объявления типов для этих библиотек предоставляются вместе с исходным кодом.

Аннотации типа [ править ]

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

функция  добавить ( слева : число ,  справа : число ) :  число  { возврат  влево  +  вправо ; }

Аннотации для примитивных типов number, booleanи string. Машинопись также поддерживает типы данных со следующими примечаниями Array, Enums, void.

Вновь введенные типы данных: Tuple, Union, neverи any. TupleТипом является массив с предопределенными типами данных для каждого индекса . Переменная, содержащая более одного типа данных, называется Unionтипом. Когда вы уверены, что что-то никогда не произойдет, вы используете neverшрифт. Слабо- или динамически типизированные структуры относятся к anyтипу. [33]

Аннотации типов можно экспортировать в отдельный файл объявлений, чтобы сделать информацию о типах доступной для сценариев TypeScript, использующих типы, уже скомпилированные в JavaScript. Аннотации могут быть объявлены для существующей библиотеки JavaScript, как это было сделано для Node.js и jQuery .

Компилятор TypeScript использует вывод типа для вывода типов, когда типы не указаны. Например, addметод в приведенном выше коде будет считаться возвращающим, numberдаже если не была предоставлена ​​аннотация типа возвращаемого значения. Это основано на статических типах leftи rightсуществовании numbers, а также на знании компилятором того, что результатом сложения двух numbersвсегда является number. Однако явное объявление типа возвращаемого значения позволяет компилятору проверить правильность.

Если из-за отсутствия объявлений тип не может быть определен, по умолчанию используется динамический anyтип. Значение anyтипа поддерживает те же операции, что и значение в JavaScript, и для операций со anyзначениями выполняется минимальная проверка статического типа . [34]

Файлы объявлений [ править ]

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

Концепция файлов объявлений аналогична концепции файла заголовка в C / C ++ .

объявить  арифметику пространства имен  { добавить ( слева : число , справа : число ) : число ; вычитание ( слева : число , справа : число ) : число ; умножить ( слева : число , справа : число ) : число ; разделить ( слева : число , справа :            число ) :  число ; }

Файлы объявления типов могут быть написаны вручную для существующих библиотек JavaScript, как это было сделано для jQuery и Node.js.

Большие коллекции файлов объявлений для популярных библиотек JavaScript размещены на GitHub в DefinentyTyped .

Классы [ править ]

TypeScript поддерживает классы ECMAScript 2015, которые интегрируют дополнительную поддержку аннотаций типов.

class  Person  {  частное  имя : строка ;  личный  возраст : число ;  частная  зарплата : число ; конструктор ( имя : строка ,  возраст : число ,  зарплата : число )  {  this . name  =  name ;  это . age  =  возраст ;  это . зарплата  =  зарплата ;  } toString () :  string  {  return  ` $ { this . name } ( $ { this . age } ) ( $ { this . salary } ) ` ;  // Начиная с версии 1.4  } }

Дженерики [ править ]

TypeScript поддерживает универсальное программирование . [35] Ниже приводится пример функции идентичности . [36]

 id функции < T > ( x : T ) :  T  {  return  x ; }

Модули и пространства имен [ править ]

TypeScript различает модули и пространства имен. Обе функции TypeScript поддерживают инкапсуляцию классов, интерфейсов, функций и переменных в контейнеры. Пространства имен (ранее внутренние модули) используют немедленно вызываемое функциональное выражение JavaScript для инкапсуляции кода, тогда как модули (ранее внешние модули) используют для этого шаблоны библиотеки JavaScript ( AMD или CommonJS ). [37]

Инструменты разработки [ править ]

Компилятор [ править ]

Машинописи компилятор, названный tsc, как написано в машинопись . В результате его можно скомпилировать в обычный JavaScript и затем запустить в любом движке JavaScript (например, в браузере). Пакет компилятора поставляется вместе с хостом сценария, который может выполнять компилятор. Он также доступен в виде пакета Node.js , который использует Node.js в качестве хоста.

Текущая версия компилятора по умолчанию поддерживает ECMAScript 5. Можно настроить таргетинг на ECMAScript 2015, чтобы использовать языковые функции, эксклюзивные для этой версии (например, генераторы). Классы, несмотря на то, что они являются частью стандарта ECMAScript 2015, доступны в обоих режимах.

Поддержка IDE и редактора [ править ]

  • Microsoft предоставляет подключаемый модуль для Visual Studio 2012 и WebMatrix , полную интегрированную поддержку в Visual Studio 2013 , Visual Studio 2015 и базовую поддержку текстового редактора для Emacs и Vim . [38]
  • Visual Studio Code - это кроссплатформенный редактор исходного кода (в основном) с открытым исходным кодом, разработанный Microsoft на основе Electron . Он поддерживает TypeScript в дополнение к нескольким другим языкам и предлагает такие функции, как отладка и интеллектуальное завершение кода .
  • alm.tools - это облачная IDE с открытым исходным кодом для TypeScript, созданная с использованием TypeScript, ReactJS и TypeStyle.
  • JetBrains поддерживает TypeScript с автозавершением кода, рефакторингом и отладкой в ​​своих IDE, построенных на платформе IntelliJ, таких как PhpStorm 6, WebStorm 6 и IntelliJ IDEA , [39], а также в их надстройке и расширении Visual Studio ReSharper 8.1. [40] [41]
  • Atom имеет подключаемый модуль TypeScript от Basarat с поддержкой автозавершения кода, навигации, форматирования и быстрой компиляции. [42]
  • Онлайн- среда Cloud9 IDE и Codenvy поддерживают TypeScript.
  • Доступен подключаемый модуль для IDE NetBeans .
  • Доступен плагин для Eclipse IDE (версия Kepler)
  • TypEcs доступен для Eclipse IDE .
  • Кросс-платформенная облачная IDE Codeanywhere поддерживает TypeScript.
  • Webclipse Плагин Eclipse, предназначенный для разработки TypeScript и Angular 2 .
  • Angular IDE Автономная IDE, доступная через npm для разработки приложений TypeScript и Angular 2, со встроенной поддержкой терминала.
  • Tide - интерактивная среда разработки TypeScript для Emacs .

Интеграция со средствами автоматизации сборки [ править ]

Используя плагины , TypeScript можно интегрировать со средствами автоматизации сборки, включая Grunt (grunt-ts [43] ), Apache Maven (TypeScript Maven Plugin [44] ), Gulp (gulp-typescript [45] ) и Gradle (TypeScript Gradle. Плагин [46] ).

Инструменты для линтинга [ править ]

TSLint [47] сканирует код TypeScript на соответствие набору стандартов и руководств. ESLint , стандартный линтер JavaScript, также предоставил некоторую поддержку TypeScript через плагины сообщества. Однако неспособность ESLint использовать языковые сервисы TypeScript препятствовала определенным формам семантического линтинга и анализа в масштабе всей программы. [48] В начале 2019 года команда TSLint объявила об отказе от линтера в пользу typescript-eslintсовместных усилий команд TSLint, ESLint и TypeScript по консолидации линтинга под эгидой ESLint для повышения производительности, единства сообщества и доступности для разработчиков. [49] Для использования TypeScript с ESLint вам необходимо добавить @typescript-eslint/eslint-pluginи @typescript-eslint/parser.

История выпусков [ править ]

См. Также [ править ]

  • Дротик
  • Котлин
  • JS ++

Ссылки [ править ]

Цитаты [ править ]

  1. ^ "TypeScript" . CodePlex . Проверено 26 апреля 2015 года .
  2. ^ a b «Выпуски · microsoft / TypeScript · GitHub» . GitHub . 9 апреля 2021 г.
  3. ^ «Совместимость типов» . TypeScript . Проверено 21 марта 2018 года .
  4. Брайт, Питер (3 октября 2012 г.). «Microsoft TypeScript: JavaScript, который нам нужен, или решение, ищущее проблему?» . Ars Technica . Condé Nast . Проверено 26 апреля 2015 года .
  5. ^ «Программирование TypeScript с помощью кода Visual Studio» . code.visualstudio.com . Проверено 12 февраля 2019 .
  6. ^ "борисянков / ОпределенноТипед" . GitHub . Проверено 26 апреля 2015 года .
  7. ^ Домашняя страница TypeScript , «Visual Studio включает TypeScript в комплект, начиная с Visual Studio 2013 с обновлением 2»
  8. ^ Инструменты TypeScript 1.0 для Visual Studio 2012
  9. Фоли, Мэри Джо (1 октября 2012 г.). «Microsoft закрывает TypeScript, надмножество JavaScript» . ZDNet . CBS Interactive . Проверено 26 апреля 2015 года .
  10. ^ Somasegar, S. (1 октября 2012). «Блог Сомасегара» . Microsoft . Проверено 26 апреля 2015 года .
  11. ^ Бакстер-Рейнольдс, Мэтт (1 октября 2012 г.). «Microsoft TypeScript: может ли отец C # спасти нас от тирании JavaScript?» . ZDNet . Проверено 26 апреля 2015 года .
  12. Джексон, Иоав (1 октября 2012 г.). «Microsoft расширяет Javascript для крупномасштабной разработки» . ИТ-директор . IDG Enterprise . Проверено 26 апреля 2015 года .
  13. ^ «Microsoft расширяет JavaScript для крупномасштабной разработки» . InfoWorld . IDG . 1 октября 2012 . Проверено 26 апреля 2015 года .
  14. Тернер, Джонатан (2 апреля 2014 г.). «Анонс TypeScript 1.0» . Блог команды разработчиков языка TypeScript . Microsoft . Проверено 26 апреля 2015 года .
  15. Мигель де Икаса (1 октября 2012 г.). «TypeScript: первые впечатления» . Проверено 12 октября 2012 года . Но TypeScript дает разработчикам Unix только половину выгоды от использования строго типизированного языка: строгая типизация. Intellisense, автозавершение кода и рефакторинг - это инструменты, доступные только пользователям Visual Studio Professional в Windows. Нет поддержки Eclipse, MonoDevelop или Emacs для каких-либо языковых функций.
  16. ^ "Microsoft TypeScript: может ли отец C # спасти нас от тирании JavaScript?" . ZDNet . 1 октября 2012 . Проверено 12 октября 2012 года . И я считаю, что это довольно большая ошибка. Если вы создаете веб-приложения, которые работают на чем-либо, кроме Windows, вы, скорее всего, используете Mac и, скорее всего, не используете Visual Studio. Для получения IntelliSense вам понадобится подключаемый модуль Visual Studio. Все, что вы получаете без Visual Studio, - это строгая типизация. Вы не получите тех преимуществ производительности, которые дает IntelliSense. .
  17. ^ «TypeStrong: единственный пакет TypeScript, который вам когда-либо понадобится» . Проверено 21 июля +2016 .
  18. ^ Hillar, Гастон (14 мая 2013). «Работа с TypeScript в Visual Studio 2012» . Журнал доктора Добба . Проверено 26 апреля 2015 года .
  19. ^ "TypeScript 0.9 прибывает с новым компилятором, поддержка дженериков" . Реестр . 18 июня 2013 . Проверено 26 апреля 2015 года .
  20. ^ Хейлсберг Андерс (2 апреля 2014). «TypeScript» . Канал 9 . Microsoft . Проверено 26 апреля 2015 года .
  21. Джексон, Иоав (25 февраля 2014 г.). «Microsoft TypeScript переходит на Visual Studio» . Мир ПК . IDG . Проверено 26 апреля 2015 года .
  22. Тернер, Джонатан (21 июля 2014 г.). «Новый компилятор и переход на GitHub» . Блог команды разработчиков языка TypeScript . Microsoft . Проверено 26 апреля 2015 года .
  23. Брайт, Питер (22 сентября 2016 г.). «TypeScript, JavaScript от Microsoft для больших приложений, достигает версии 2.0» . Ars Technica . Condé Nast . Проверено 22 сентября 2016 года .
  24. ^ «Объявление TypeScript 3.0» . 30 июля 2018 . Дата обращения 16 марта 2020 .
  25. ^ «TypeScript 3.0» . 30 июля 2018 . Дата обращения 16 марта 2020 .
  26. ^ a b «Объявление о TypeScript 4.0» . TypeScript . 20 августа 2020 . Проверено 30 октября 2020 года .
  27. ^ Хейлсберг (5 октября 2012). «Что такое TypeScript и почему с Андерсом Хейлсбергом» . www.hanselminutes.com . Проверено 15 января 2014 года .
  28. ^ С. Somasegar (1 октября 2012). «TypeScript: разработка JavaScript в масштабе приложения» . msdn.com . Проверено 27 ноября 2013 года .
  29. ^ необязательная статическая типизация называется постепенной типизацией
  30. ^ Клинт Финли (1 октября 2012). «Microsoft представляет новый JavaScript-подобный язык программирования TypeScript» . TechCrunch . Проверено 27 ноября 2013 года .
  31. ^ "Угловой 2" . angular.io . Дата обращения 4 мая 2016 .
  32. ^ «Добро пожаловать в TypeScript» . typescriptlang.org . Microsoft . Проверено 26 апреля 2015 года .
  33. ^ www.typescriptlang.org/ https://www.typescriptlang.org/docs/handbook/2/everyday-types.html . Проверено 30 марта 2021 года . Отсутствует или пусто |title=( справка )
  34. ^ Спецификация языка TypeScript, стр.24. Архивировано 17 ноября 2013 г. на Wayback Machine.
  35. Тернер, Джонатан (18 июня 2013 г.). «Анонс TypeScript 0.9» . Блог команды разработчиков языка TypeScript . Microsoft .
  36. ^ «Обобщения в машинописном тексте» . Microsoft .
  37. ^ Sönke Сотманн (31 января 2014). «Введение в модульную систему TypeScript» . blog.oio.de . Проверено 21 февраля 2014 года .
  38. Оливье Блох (1 октября 2012 г.). "Sublime Text, Vi, Emacs: TypeScript включен!" . Microsoft . Проверено 28 октября 2012 года .
  39. ^ «Поддержка TypeScript в WebStorm 6» . JetBrains.
  40. ^ «Поддержка TypeScript в ReSharper 8.1» . JetBrains. 28 октября 2013 г.
  41. ^ ReSharper: расширение Visual Studio для разработчиков .NET от JetBrains
  42. ^ "Атом-машинопись" . Атом . Дата обращения 9 января 2020 .
  43. ^ "TypeStrong / grunt-ts" . GitHub . Проверено 26 апреля 2015 года .
  44. ^ "ppedregal / typescript-maven-plugin" . GitHub . Проверено 26 апреля 2015 года .
  45. ^ "ivogabe / gulp-typescript" . GitHub . Проверено 14 июля 2017 года .
  46. ^ "sothmann / typescript-gradle-plugin" . GitHub . Проверено 26 апреля 2015 года .
  47. ^ "TSLint" .
  48. ^ Palantir (19 февраля 2019). «TSLint в 2019 году» . Средний . Проверено 24 апреля 2019 .
  49. ^ "TSLint устарел, чтобы сосредоточить поддержку на машинописном тексте-eslint" . InfoQ . Проверено 24 апреля 2019 .

Источники [ править ]

  • «Webclipse: подключаемый модуль Eclipse» Genuitec. Проверено 9 ноября +2016.
  • "Angular IDE от Webclipse: Автономная IDE" Genuitec. Проверено 9 ноября +2016.

Внешние ссылки [ править ]

  • Проект TypeScript на GitHub
  • Спецификация языка TypeScript
  • Кросс-платформенный редактор TypeScript CATS