TypeScript
| Класс языка: |
мультипарадигменный: объектно-ориентированное, обобщённое, функциональное, императивное, аспектно-ориентированное, событийно-ориентированное, прототипное программирование |
|---|---|
| Тип исполнения: |
компиляция в JavaScript |
| Появился в: |
2012 |
| Автор: |
Андерс Хейлсберг (англ. Anders Hejlsberg) (Microsoft) |
| Расширение файлов: |
|
| Выпуск: |
(1.5) |
| Испытал влияние: | |
| Лицензия: |
OWFa 1.0, Лицензия Apache (компилятор) |
| Сайт: |
TypeScript — язык программирования, представленный Microsoft в 2012 году и позиционируемый как средство разработки веб-приложений, расширяющее возможности JavaScript[1][2][3][4][5][6].
Разработчиком языка TypeScript является Андерс Хейлсберг (англ. Anders Hejlsberg) создавший ранее Turbo Pascal, Delphi и C#.
Спецификации языка открыты и опубликованы в рамках соглашения Open Web Foundation Specification Agreement (OWFa 1.0)[7].
TypeScript является обратно совместимым с JavaScript и компилируется в последний. Фактически, после компиляции программу на TypeScript можно выполнять в любом современном браузере или использовать совместно с серверной платформой Node.js. Код экспериментального компилятора, транслирующего TypeScript в JavaScript, распространяется под лицензией Apache. Его разработка ведётся в публичном репозитории через сервис GitHub[8].
TypeScript отличается от JavaScript возможностью явного определения типов (статическая типизация), поддержкой использования полноценных классов (как в традиционных объектно-ориентированных языках), а также поддержкой подключения модулей. Что призвано повысить скорость разработки, облегчить читаемость, рефакторинг и повторное использования кода, помочь осуществлять поиск ошибок на этапе разработки и компиляции, и, возможно, скорость выполнения программ.
Планируется, что в силу полной обратной совместимости адаптация существующих приложений на новый язык программирования может происходить поэтапно, путём постепенного определения типов.
На момент релиза представлены файлы для восприятия расширенного синтаксиса TypeScript для Vim и Emacs, а также плагин для Microsoft Visual Studio.
Одновременно с выходом спецификации разработчики подготовили файлы с декларациями статических типов для некоторых популярных JavaScript-библиотек, среди которых jQuery.
Содержание
Справка[править | править вики-текст]
TypeScript возник из-за предполагаемых кратких появлений JavaScript в крупномасштабных приложениях как в Microsoft, так и у прочих их клиентов.[9] Проблемы с комплексной разработкой кода на JavaScript привели к необходимости облегчения разработки компонентов языка.[10]
Разработчики TypeScript искали решение, которое не будет нарушать совместимость со стандартом и его кросс-платформенной поддержкой. Зная, что только стандарт ECMAScript предлагает поддержку в будущем для программирования на базе классов (Class-based programming), TypeScript был основан на этом предположении. Это привело к созданию компилятора JavaScript с набором синтаксических языковых расширений, увеличенным на основе предложения, которое трансформирует расширения в JavaScript. В этом смысле TypeScript является представлением того, что ожидать от ECMAScript 6. Уникальный аспект не в предложении, а в добавлении в TypeScript статической типизации, что позволяет статически анализировать язык, облегчая оснастки и IDE поддержку.
поддержка ECMAScript 6[править | править вики-текст]
TypeScript добавляет поддержку следующих функций: классы, модули и синтаксис функции стрелкой, как они были предложены в следующем стандарте ECMAScript 6.
Хотя стандарт не готов, Microsoft заявила, что стремится расширить возможности TypeScript до предложенного стандарта.
Особенности языка[править | править вики-текст]
TypeScript это расширение языка ECMAScript 5. Добавлены следующие опции:
- Type annotations and compile-time type checking
- Type inference
- Classes
- Interfaces
- Enumerated type
- Mixin
- Generic
- Modules[11]
- Сокращенный синтаксис "стрелок" для anonymous functions
- Дополнительные параметры и параметры по умолчанию
- Tuple
Синтаксически, TypeScript очень похож на JScript .NET, очередную реализацию Microsoft языкового стандарта ECMA-262, обеспечивающего поддержку статической типизации и классических объектно-ориентированных возможностей языка, таких как классы, наследование, интерфейсы и пространства имен.
Совместимость с JavaScript[править | править вики-текст]
TypeScript является надстройкой над JavaScript. Таким образом, программа JavaScript также является правильной программой TypeScript, и программа TypeScript могут легко включать JavaScript. TypeScript компилирует ES3-совместимый JavaScript.[12] По умолчанию компилируется ECMAScript 3, как преобладающей стандарт; также есть возможность создавать конструкции, используемые в ECMAScript 5.
С TypeScript можно использовать существующий JavaScript-код, включать популярные библиотеки JavaScript, и вызывать TypeScript-код, сгенерированный из других JavaScript.[12] Объявление типов для этих библиотек поставляются вместе с исходным кодом.
Объявление типов[править | править вики-текст]
TypeScript обеспечивает статическую типизацию static typing через объявление типа для того, чтобы проверять типы type checking во время компиляции compile time. Это не является обязательным и может быть проигнорировано чтобы использовать обычную динамическую типизацию dynamic typing JavaScript.
function add(left: number, right: number): number {
return left + right;
}
Аннотациях примитивных типов: number, boolean и string. Слабо или динамически введенные структуры имеют тип any.
Определения типов могут быть экспортированы в отдельный файл объявлений , чтобы сделать информацию о типах доступной для сценариев TypeScript с использованием различных типов уже скомпилированных в JavaScript. Определения могут быть заявлены к существующей библиотеке JavaScript, как это было сделано для Node.js и JQuery.
Компилятор TypeScript использует тип выводаtype inference для вывода типов когда они не указаны. Например, метод add в приведенном выше коде будет выводить как возврат в number, даже если бы не было предусмотрено никакого возврата типа в определении. Это основано на статических типах left и right numbers и познаниях компилятора о том, что результат сложения двух numbers всегда number. Тем не менее, прописывание возвращаемого типа позволяет компилятору проверить правильность.
Если тип не может быть выведен из-за отсутствия объявлений, то по умолчанию будет динамической тип any. Значение типа any поддерживает те же операции, что и значение в JavaScript и минимальная статическая проверка типов выполняется для операции на any.[13]
Файлы деклараций[править | править вики-текст]
Когда сценарий TypeScript будет скомпилирован, есть опция для создания файла декларации (с расширением .d.ts), что является функцией в качестве интерфейса interface к компонентамcomponent в составленном JavaScript. В процессе компилятор удаляет все функции и тела методов и сохраняет только подписи типов, которые экспортируются. Итоговый файл декларации может быть использован для описания экспортируемых виртуальных типов TypeScript библиотеки JavaScript или модуля, когда сторонний разработчик употребляет их в TypeScript.
Концепция файлов декларации аналогична таковой в заголовочных файлахheader file в C/C++.
declare module arithmetics {
add(left: number, right: number): number;
subtract(left: number, right: number): number;
multiply(left: number, right: number): number;
divide(left: number, right: number): number;
}
Файлы декларации могут быть написаны вручную как для существующих библиотек JavaScript, так и для jQuery и Node.js.
Большая коллекция файлов деклараций для популярных библиотек JavaScript размещена на GitHub borisyankov в его DefinitelyTyped репозитории.
Классы[править | править вики-текст]
TypeScript поддерживает ECMAScript 6 классы что позволяет поддерживать опцию объявления типов.
class Person {
private name: string;
private age: number;
private salary: number;
constructor(name: string, age: number, salary: number) {
this.name = name;
this.age = age;
this.salary = salary;
}
toString(): string {
return this.name + " (" + this.age + ")" + "(" + this.salary + ")";
}
}
Шаблоны[править | править вики-текст]
TypeScript поддерживает обобщённое программирование.[14]
Модули[править | править вики-текст]
Используя модули, TypeScript поддерживает инкапсуляцию классов, интерфейсов, функций и переменных в пространствах имен. TypeScript различает внутренние и внешние модули. Внутренние модули на основе синтаксиса модуля из ECMAScript 6, тогда как внешние модули используют библиотеку JavaScript (AMD или CommonJS).[15]
Инструменты разработки[править | править вики-текст]
| Этот раздел статьи ещё не написан.
Согласно замыслу одного из участников Википедии, на этом месте должен располагаться специальный раздел.
Вы можете помочь проекту, написав этот раздел. |
Компилятор[править | править вики-текст]
IDE и поддержка редакторов[править | править вики-текст]
Интеграция с автоматическими инструментами сборки[править | править вики-текст]
История[править | править вики-текст]
| Этот раздел статьи ещё не написан.
Согласно замыслу одного из участников Википедии, на этом месте должен располагаться специальный раздел.
Вы можете помочь проекту, написав этот раздел. |
См. также[править | править вики-текст]
Примечания[править | править вики-текст]
- ↑ Microsoft takes the wraps off TypeScript, a superset of JavaScript
- ↑ TypeScript: JavaScript Development at Application Scale
- ↑ Microsoft TypeScript: Can the father of C# save us from the tyranny of JavaScript?
- ↑ Microsoft Augments Javascript for Large-scale Development
- ↑ Microsoft анонсировала новый язык веб-программирования TypeScript
- ↑ Компания Microsoft представила TypeScript, новую открытую альтернативу JavaScript
- ↑ Open Web Foundation Final Specification Agreement (OWFa 1.0)
- ↑ Проект TypeScript на сайте GitHub
- ↑ Anders Hejlsberg. What is TypeScript and why with Anders Hejlsberg. www.hanselminutes.com (5 октября 2012). Проверено 15 января 2014.
- ↑ S. Somasegar. TypeScript: JavaScript Development at Application Scale. msdn.com (1 октября 2012). Проверено 27 ноября 2013.
- ↑ Klint Finley. Microsoft Previews New JavaScript-Like Programming Language TypeScript. TechCrunch (1 октября 2012). Проверено 27 ноября 2013.
- ↑ 1 2 Official TypeScript Home Page
- ↑ TypeScript Language Specification p.24
- ↑ Jonathan Turner. Announcing TypeScript 0.9. msdn.com (18 июня 2013). Проверено 27 ноября 2013.
- ↑ Sönke Sothmann. An introduction to TypeScript’s module system. blog.oio.de (31 января 2014). Проверено 21 февраля 2014.
Ссылки[править | править вики-текст]
| Викиновости по теме: | |
- Официальный сайт языка программирования TypeScript.
- CATS (Code Assistant for TypeScript) — Интегрированная среда разработки для TypeScript.
| Это заготовка статьи о компьютерных языках. Вы можете помочь проекту, дополнив её. |
Для улучшения этой статьи желательно?:
|

