TypeScript
СЕРГЕЙ ЗВЯГИН
СПЕЦИАЛЬНО ДЛЯ GetDev.NET
ЧТО ЭТО ТАКОЕ?
Язык программирования от Microsoft для создания web-
приложений
Расширяет возможности JavaScript
Обратно совместим с JavaScript
Компилируется в JavaScript
Что такое TypeScript?
Статическая типизация
Поддержка обобщенных типов (generics)
Поддержка перечислений (enums)
Классы и интерфейсы
Модули
Arrow function syntax
Есть в TypeScript, но нет в JavaScript
Один из авторов - Андерс Хейлсберг (Delphi, C#)
Официально язык был представлен в конце сентября 2012
года
Версия по состоянию на 14 сентября 2013 года - 0.9.1.1
Спецификация языка открыта и опубликована в рамках
соглашения Open Web Foundation Specification Agreement
(OWFa 1.0)
Компилятор распространяется под лицензией Apache, а его
разработка ведется в публичном репозитории на CodePlex
История
Компилятор TypeScript написан на TypeScript и превращает
исходники в валидный ECMAScript 3 или ECMAScript 5 код,
который выполняется любым браузером
Есть также реализация компиляции на лету с
подключением дополнительной библиотеки TypeScript
Compile
Для абсолютного большинства популярных JavaScript-
библиотек существуют определения типов (файлы *.d.ts)
Как это работает
Плагин для Visual Studio
Node.js пакет
npm install -g typescript
tsc helloworld.ts
Поддержка в JetBrains WebStorm 6 и выше
Средства для популярных редакторов Vim, Sublime Text и
Emacs
Как писать код
СИНТАКСИС
Добавление аннотации
PredefinedType: any, number, boolean, string, void
TypeReference: классы и интерфейсы
TypeQuery: с использованием ключевого слова typeof
TypeLiteral: анонимный тип, получаемый из других типов,
комбинируемых в объекте, функции, массиве или
конструкторе
Указание типа
Три типа объявления: method signature, function type
literal и object type literal
Возможны опциональные аргументы, значения аргументов
по умолчанию, переменное количество аргументов,
перегрузки функции и даже специальные сигнатуры с
константными перегрузками
Объявление функции
Служат только для объявления и параметризации
объектных типов
При компиляции ни во что не трансформируются
Могут реализовывать другие интерфейсы и даже классы
(только сигнатуры всех членов)
Использование интерфейса
Класс может наследоваться от одного базового класса
(extends) и реализовывать неограниченное число классов и
интерфейсов (implements)
Возможно указание конструктора, свойств, объявление
приватных и публичных, экземплярных и статических
членов
Возможен вызов конструктора и методов базового класса
Определение класса
Внутренние модули (аналог namespace в .NET)
Внешние модули - используются в связке с библиотеками,
реализующими загрузку модулей
CommonJS Module Specification (используется в Node.js)
Asynchronous Module Definition (реализован в RequireJS)
Реализация модуля
ОТЛАДКА
Отладка
Отладка основана на спецификации Source Maps
Можно использовать Visual Studio и Internet Explorer
в настройках Web Essentials включить поддержку Source Maps
Можно использовать средства отладки в Firefox, Chrome и
Safari
опция при компиляции: tsc -sourcemap app.ts
АЛЬТЕРНАТИВЫ
Альтернативы
CoffeeScript
↓
TypeScript
↓
Dart
Dart
TypeScript vs CoffeeScript
TypeScript
статическая типизация
интерфейсы
IntelliSence
частичная поддержка ES6
любой JS код является валидным
TS кодом
...
CoffeeScript
размер кода меньше на 35%
удобная работа с условиями,
циклами, строками и
регулярками
стабильная версия
популярность
...
ВЗГЛЯД В БУДУЩЕЕ
Добавление TypeScript нового файла через Solution Explorer
конфигурирует проект для компиляции ts-файлов
Возможен поиск определений типов для любого js-файла
из контекстного меню в Solution Explorer
Visual Studio 2013
Планируется поддержка async/await, mixins и модификатора
доступа protected
Будет развиваться поддержка EcmaScript 6
Будет добавлена компиляция в ES6
TypeScript v.1+
Плагин для 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
Полезные ссылки
ВОПРОСЫ?
СПАСИБО ЗА ВНИМАНИЕ!
Сергей Звягин
DevExpress
BingoRUS

TypeScript

  • 1.
  • 2.
  • 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.
    Плагин для VisualStudio Node.js пакет npm install -g typescript tsc helloworld.ts Поддержка в JetBrains WebStorm 6 и выше Средства для популярных редакторов Vim, Sublime Text и Emacs Как писать код
  • 8.
  • 9.
  • 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) Реализация модуля
  • 15.
  • 16.
    Отладка Отладка основана наспецификации Source Maps Можно использовать Visual Studio и Internet Explorer в настройках Web Essentials включить поддержку Source Maps Можно использовать средства отладки в Firefox, Chrome и Safari опция при компиляции: tsc -sourcemap app.ts
  • 17.
  • 18.
  • 19.
  • 20.
    TypeScript vs CoffeeScript TypeScript статическаятипизация интерфейсы IntelliSence частичная поддержка ES6 любой JS код является валидным TS кодом ... CoffeeScript размер кода меньше на 35% удобная работа с условиями, циклами, строками и регулярками стабильная версия популярность ...
  • 21.
  • 22.
    Добавление TypeScript новогофайла через Solution Explorer конфигурирует проект для компиляции ts-файлов Возможен поиск определений типов для любого js-файла из контекстного меню в Solution Explorer Visual Studio 2013
  • 23.
    Планируется поддержка async/await,mixins и модификатора доступа protected Будет развиваться поддержка EcmaScript 6 Будет добавлена компиляция в ES6 TypeScript v.1+
  • 24.
    Плагин для VisualStudio 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 Полезные ссылки
  • 25.
  • 26.