Видеозапись встречи:
http://getdev.net/Event/typescript
TypeScript - язык программирования от Microsoft, который является надмножеством JavaScript. Он поддерживает статическую типизацию, модули, определение классов и интерфейсов и транслируется в чистый JS. Спецификации языка открыты, а код компилятора распространяется под лицензией Apache.
3. Язык программирования от Microsoft для создания web-
приложений
Расширяет возможности JavaScript
Обратно совместим с JavaScript
Компилируется в JavaScript
Что такое TypeScript?
4. Статическая типизация
Поддержка обобщенных типов (generics)
Поддержка перечислений (enums)
Классы и интерфейсы
Модули
Arrow function syntax
Есть в TypeScript, но нет в JavaScript
5. Один из авторов - Андерс Хейлсберг (Delphi, C#)
Официально язык был представлен в конце сентября 2012
года
Версия по состоянию на 14 сентября 2013 года - 0.9.1.1
Спецификация языка открыта и опубликована в рамках
соглашения Open Web Foundation Specification Agreement
(OWFa 1.0)
Компилятор распространяется под лицензией Apache, а его
разработка ведется в публичном репозитории на CodePlex
История
6. Компилятор TypeScript написан на TypeScript и превращает
исходники в валидный ECMAScript 3 или ECMAScript 5 код,
который выполняется любым браузером
Есть также реализация компиляции на лету с
подключением дополнительной библиотеки TypeScript
Compile
Для абсолютного большинства популярных JavaScript-
библиотек существуют определения типов (файлы *.d.ts)
Как это работает
7. Плагин для Visual Studio
Node.js пакет
npm install -g typescript
tsc helloworld.ts
Поддержка в JetBrains WebStorm 6 и выше
Средства для популярных редакторов Vim, Sublime Text и
Emacs
Как писать код
10. PredefinedType: any, number, boolean, string, void
TypeReference: классы и интерфейсы
TypeQuery: с использованием ключевого слова typeof
TypeLiteral: анонимный тип, получаемый из других типов,
комбинируемых в объекте, функции, массиве или
конструкторе
Указание типа
11. Три типа объявления: method signature, function type
literal и object type literal
Возможны опциональные аргументы, значения аргументов
по умолчанию, переменное количество аргументов,
перегрузки функции и даже специальные сигнатуры с
константными перегрузками
Объявление функции
12. Служат только для объявления и параметризации
объектных типов
При компиляции ни во что не трансформируются
Могут реализовывать другие интерфейсы и даже классы
(только сигнатуры всех членов)
Использование интерфейса
13. Класс может наследоваться от одного базового класса
(extends) и реализовывать неограниченное число классов и
интерфейсов (implements)
Возможно указание конструктора, свойств, объявление
приватных и публичных, экземплярных и статических
членов
Возможен вызов конструктора и методов базового класса
Определение класса
14. Внутренние модули (аналог namespace в .NET)
Внешние модули - используются в связке с библиотеками,
реализующими загрузку модулей
CommonJS Module Specification (используется в Node.js)
Asynchronous Module Definition (реализован в RequireJS)
Реализация модуля
16. Отладка
Отладка основана на спецификации Source Maps
Можно использовать Visual Studio и Internet Explorer
в настройках Web Essentials включить поддержку Source Maps
Можно использовать средства отладки в Firefox, Chrome и
Safari
опция при компиляции: tsc -sourcemap app.ts
20. TypeScript vs CoffeeScript
TypeScript
статическая типизация
интерфейсы
IntelliSence
частичная поддержка ES6
любой JS код является валидным
TS кодом
...
CoffeeScript
размер кода меньше на 35%
удобная работа с условиями,
циклами, строками и
регулярками
стабильная версия
популярность
...
22. Добавление TypeScript нового файла через Solution Explorer
конфигурирует проект для компиляции ts-файлов
Возможен поиск определений типов для любого js-файла
из контекстного меню в Solution Explorer
Visual Studio 2013
23. Планируется поддержка async/await, mixins и модификатора
доступа protected
Будет развиваться поддержка EcmaScript 6
Будет добавлена компиляция в ES6
TypeScript v.1+
24. Плагин для Visual Studio http://cut.ms/bIsp
Средства для текстовых редакторов Vim, Sublime Text и
Emacs http://aka.ms/qwe1qu
Спецификация http://cut.ms/bIsq
Исходный код http://cut.ms/bIsr
Сравнение TypeScript и CoffeeScript http://cut.ms/bIss
Полезные ссылки