SlideShare ist ein Scribd-Unternehmen logo
1 von 23
ВВЕДЕНИЕ В


TypeScript
 Дмитрий Миндра
 LOHIKA, Одесса
Geek and Poke
http://geekandpoke
   .typepad.com/
Зачем ?
 Для построения масштабируемых и
  поддерживаемых систем
 Для облегчения поддержки кода
 TypeScript – «опционально» типизированный язык
 Полностью совместим с JavaScript и является его
  надмножеством.
 Компилируется в JavaScript
 OpenSource
Node.js
                     С чего начать ?
                      npm install –g typescript



                           tsc source.ts


Visual Studio 2012
Plugin is available
Расширения файлов
*.ts – исходный код TypeScript
• *.d.ts – TypeScript definition files
Декларации
• TypeScript всего лишь описывает контракты
  динамических типов, облегчая разработку.
• Файлы с декларайиями позволяют описать типы
  как заголовочные файлы в C++
• Intellisense будет корректно давать подсказки
• Файлы для DOM и jQuery идут в поставке с
  TypeScript (lib.d.ts).
• Сообщество активно пишет декларации для
  стандартных библиотек.
Инструментальная поддержка
•   Статическая проверка типов
•   Навигация по символам
•   Intellisense
•   Рефакторинг
Аннотации типов
function multiply(a: number, b: number) {
  return a * b;
}




• Тип возвращаемого значения будет
  выведен.
• Постфиксная запись :number
• Есть опциональные параметры
  ?:number
Типы
Тип Any является общим предком для всех типов и
может хранить любой тип JavaScript без каких-либо
ограничений.
Простые типы:
      number
      bool
      String
      null
      undefined

Объекты:
 Классы, модули, интерфейсы
 Типизированные массивы
                   var employees : Employee[] = [];
Лямбды
() => { console.log(“It’s Saturday!”)}
setTimeout(() => { alert(this.message); }, 3000);



(x) => { return Math.sin(x); }
(x) => Math.sin(x)
x => { return Math.sin(x); }
x => Math.sin(x)
Type Assertions
         function createShape(kind: string): Shape
         var circle = <Circle> createShape("circle");


• Не является приведением типов, и не
  проверяется во время выполнения.
Интерфейсы
 Интерфейсы могут расширять друг друга
 Для интерфейсов не генерируется JavaScript
interface Mover                        interface Shaker
{                                      {
  move(): void;                          shake(): void;
  getStatus(): { speed: number; };       getStatus(): { speed: number; };
}                                      }

interface MoverShaker extends Mover, Shaker
{
  getStatus(): { speed: number; frequency: number; };
}
Интерфейс

interface StringComparer { (a: string, b: string): number; }




А это будет функция, принимающая два
строковых параметра и возвращающая
числовое значение.
Ambient Declarations

declare var document:Document;



Мы вводим переменную в TypeScript, хотя она
объявлена где-то в другом месте.

Код для таких объявлений не генерируется.
Классы
                                            var Lottery = (function () {
                                               function Lottery(secret) {
class Lottery {                                   this.secret = secret;
   constructor (private secret: number) {      }
   }                                           Lottery.prototype.gamble =
                                            function (guess) {
  public gamble(guess: number) {                  if(guess == this.secret) {
    if (guess == this.secret)
                                                     console.log('win');
console.log('win');
                                                  } else {
    else
                                                     console.log('loose');
       console.log('loose')
  }                                               }
                                               };
    private showSecret() {                     Lottery.prototype.showSecret =
      console.log('secret');                function () {
    }                                             console.log('secret');
}                                              };
                                               return Lottery;
                                            })();
Классы
• Есть public и private модификаторы.
• Объявление и инициализация полей
  через параметры конструктора.
• Обращение к родительскому классу
  через super
Модули
module M {
  var s = "hello";
  export function f() {
    return s;
  }
}
M.f();
M.s; // Error, s is not exported
Зависимости
Reference comment


                      /// <reference path="Common.ts" />


Import declaration

import mod = module("saturday");
var modspeaker = new mod.Speaker();
Source Map
            tsc -sourcemap file.ts



В отладчике виден TypeScript вместо
скомпилированного JavaScript.
Работает в Google Chrome
Пока что не интегрировано в Visual Studio
Преимущества TypeScript
Строгая типизация
Масштабируемость
Недостатки TypeScript
Состояние Preview
Необходимость компиляции
Не полная совместимость с JavaScript
Возможное разветвление с ECMAScript
Спасибо !
https://github.com/DmytroMindra/NetworkUA-2012-TypeScriptGame

Great presentation by Ben Smith
http://10consulting.com/2012/10/12/introduction-to-typescript-
presentation/

Documentation
http://www.typescriptlang.org/Content/TypeScript%20Language%20Sp
ecification.pdf

Official Website
http://www.typescriptlang.org

Anders Hejlsberg: Introducing TypeScript

Weitere ähnliche Inhalte

Was ist angesagt?

Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10Dima Dzuba
 
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворковНикита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворковSergey Platonov
 
Объектно-ориентированное программирование. Лекция 7 и 8.
Объектно-ориентированное программирование. Лекция 7 и 8. Объектно-ориентированное программирование. Лекция 7 и 8.
Объектно-ориентированное программирование. Лекция 7 и 8. Dima Dzuba
 
Александр Фокин, Рефлексия в C++
Александр Фокин, Рефлексия в C++Александр Фокин, Рефлексия в C++
Александр Фокин, Рефлексия в C++Sergey Platonov
 
Convert this: peculiarities of cross-platform mobile game development at Vizor
Convert this: peculiarities of cross-platform mobile game development at VizorConvert this: peculiarities of cross-platform mobile game development at Vizor
Convert this: peculiarities of cross-platform mobile game development at VizorDevGAMM Conference
 
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksЛекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksMikhail Kurnosov
 
Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведения
Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведенияДракон в мешке: от LLVM к C++ и проблемам неопределенного поведения
Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведенияPlatonov Sergey
 
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!Yandex
 
Когда в C# не хватает C++
Когда в C# не хватает C++Когда в C# не хватает C++
Когда в C# не хватает C++Mikhail Shcherbakov
 
Объектно-ориентированное программирование. Лекция 5 и 6
Объектно-ориентированное программирование. Лекция 5 и 6Объектно-ориентированное программирование. Лекция 5 и 6
Объектно-ориентированное программирование. Лекция 5 и 6Dima Dzuba
 
Когда в C# не хватает C++ . Часть 3.
Когда в C# не хватает C++. Часть 3. Когда в C# не хватает C++. Часть 3.
Когда в C# не хватает C++ . Часть 3. Mikhail Shcherbakov
 
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...Yandex
 
Статический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий ЛевановСтатический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий ЛевановYandex
 
Когда в C# не хватает C++ . Часть 2.
Когда в C# не хватает C++. Часть 2.Когда в C# не хватает C++. Часть 2.
Когда в C# не хватает C++ . Часть 2.Mikhail Shcherbakov
 
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Yandex
 

Was ist angesagt? (19)

Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10Объектно-ориентированное программирование. Лекции 9 и 10
Объектно-ориентированное программирование. Лекции 9 и 10
 
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворковНикита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворков
 
Объектно-ориентированное программирование. Лекция 7 и 8.
Объектно-ориентированное программирование. Лекция 7 и 8. Объектно-ориентированное программирование. Лекция 7 и 8.
Объектно-ориентированное программирование. Лекция 7 и 8.
 
Александр Фокин, Рефлексия в C++
Александр Фокин, Рефлексия в C++Александр Фокин, Рефлексия в C++
Александр Фокин, Рефлексия в C++
 
JavaScript Intro
JavaScript IntroJavaScript Intro
JavaScript Intro
 
Convert this: peculiarities of cross-platform mobile game development at Vizor
Convert this: peculiarities of cross-platform mobile game development at VizorConvert this: peculiarities of cross-platform mobile game development at Vizor
Convert this: peculiarities of cross-platform mobile game development at Vizor
 
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksЛекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
 
Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведения
Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведенияДракон в мешке: от LLVM к C++ и проблемам неопределенного поведения
Дракон в мешке: от LLVM к C++ и проблемам неопределенного поведения
 
C sharp deep dive
C sharp deep diveC sharp deep dive
C sharp deep dive
 
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
 
Clojure #2 (2014)
Clojure #2 (2014)Clojure #2 (2014)
Clojure #2 (2014)
 
Когда в C# не хватает C++
Когда в C# не хватает C++Когда в C# не хватает C++
Когда в C# не хватает C++
 
Объектно-ориентированное программирование. Лекция 5 и 6
Объектно-ориентированное программирование. Лекция 5 и 6Объектно-ориентированное программирование. Лекция 5 и 6
Объектно-ориентированное программирование. Лекция 5 и 6
 
Когда в C# не хватает C++ . Часть 3.
Когда в C# не хватает C++. Часть 3. Когда в C# не хватает C++. Часть 3.
Когда в C# не хватает C++ . Часть 3.
 
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
 
Clojure #1
Clojure #1Clojure #1
Clojure #1
 
Статический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий ЛевановСтатический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий Леванов
 
Когда в C# не хватает C++ . Часть 2.
Когда в C# не хватает C++. Часть 2.Когда в C# не хватает C++. Часть 2.
Когда в C# не хватает C++ . Часть 2.
 
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
 

Andere mochten auch

Fundamentos del computador
Fundamentos del computadorFundamentos del computador
Fundamentos del computadorpablo163
 
Actividades para realizar con el gupo de gestion
Actividades para realizar con el gupo de gestionActividades para realizar con el gupo de gestion
Actividades para realizar con el gupo de gestionCarlos Mario Muriel Giraldo
 
Presentación3
Presentación3Presentación3
Presentación3yaauuu
 
Leidy rojas rss_ppt
Leidy rojas rss_pptLeidy rojas rss_ppt
Leidy rojas rss_pptLeidydul22
 
Taller de avas_y_ovas_2
Taller de avas_y_ovas_2Taller de avas_y_ovas_2
Taller de avas_y_ovas_2sergiosancheza
 
Projeto CTW04 - Ficticia Factory
Projeto CTW04 - Ficticia FactoryProjeto CTW04 - Ficticia Factory
Projeto CTW04 - Ficticia FactoryJErickPPTs
 
Fundamento tarea 4
Fundamento tarea 4Fundamento tarea 4
Fundamento tarea 4pablo163
 
Primavera Subcolors 2013.
Primavera Subcolors 2013.Primavera Subcolors 2013.
Primavera Subcolors 2013.JErickPPTs
 
Descobre O PaíS De CamõEs Webquest Final
Descobre O PaíS De CamõEs Webquest FinalDescobre O PaíS De CamõEs Webquest Final
Descobre O PaíS De CamõEs Webquest FinalC. Pascoal
 
Arlenis gobierno en linea
Arlenis gobierno en lineaArlenis gobierno en linea
Arlenis gobierno en lineaarlenis123
 
Juaanananna
JuaananannaJuaanananna
JuaananannaJuanLYB
 
Cultura de masas
Cultura de masasCultura de masas
Cultura de masasmiri_161
 
Numbers fun
Numbers funNumbers fun
Numbers funlidietta
 
Fundamentos del computador
Fundamentos del computadorFundamentos del computador
Fundamentos del computadoralexdino0416
 

Andere mochten auch (20)

Fundamentos del computador
Fundamentos del computadorFundamentos del computador
Fundamentos del computador
 
Fasination
FasinationFasination
Fasination
 
Actividades para realizar con el gupo de gestion
Actividades para realizar con el gupo de gestionActividades para realizar con el gupo de gestion
Actividades para realizar con el gupo de gestion
 
Modelo 51m² | Br-Homes
Modelo 51m² | Br-HomesModelo 51m² | Br-Homes
Modelo 51m² | Br-Homes
 
Presentación3
Presentación3Presentación3
Presentación3
 
Leidy rojas rss_ppt
Leidy rojas rss_pptLeidy rojas rss_ppt
Leidy rojas rss_ppt
 
Estratégia & Negócios
Estratégia & NegóciosEstratégia & Negócios
Estratégia & Negócios
 
ANEXOS
ANEXOS ANEXOS
ANEXOS
 
Plastica3
Plastica3Plastica3
Plastica3
 
Taller de avas_y_ovas_2
Taller de avas_y_ovas_2Taller de avas_y_ovas_2
Taller de avas_y_ovas_2
 
Projeto CTW04 - Ficticia Factory
Projeto CTW04 - Ficticia FactoryProjeto CTW04 - Ficticia Factory
Projeto CTW04 - Ficticia Factory
 
Fundamento tarea 4
Fundamento tarea 4Fundamento tarea 4
Fundamento tarea 4
 
Programa civico
Programa civicoPrograma civico
Programa civico
 
Primavera Subcolors 2013.
Primavera Subcolors 2013.Primavera Subcolors 2013.
Primavera Subcolors 2013.
 
Descobre O PaíS De CamõEs Webquest Final
Descobre O PaíS De CamõEs Webquest FinalDescobre O PaíS De CamõEs Webquest Final
Descobre O PaíS De CamõEs Webquest Final
 
Arlenis gobierno en linea
Arlenis gobierno en lineaArlenis gobierno en linea
Arlenis gobierno en linea
 
Juaanananna
JuaananannaJuaanananna
Juaanananna
 
Cultura de masas
Cultura de masasCultura de masas
Cultura de masas
 
Numbers fun
Numbers funNumbers fun
Numbers fun
 
Fundamentos del computador
Fundamentos del computadorFundamentos del computador
Fundamentos del computador
 

Ähnlich wie NetworkUA - 2012 - Introduction TypeScript

Lift, play, akka, rails part1
Lift, play, akka, rails part1Lift, play, akka, rails part1
Lift, play, akka, rails part1Eduard Antsupov
 
C#. От основ к эффективному коду
C#. От основ к эффективному кодуC#. От основ к эффективному коду
C#. От основ к эффективному кодуVasiliy Deynega
 
Multithreading in java past and actual
Multithreading in java past and actualMultithreading in java past and actual
Multithreading in java past and actualYevgen Levik
 
Принципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioПринципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioAndrey Karpov
 
статический анализ кода
статический анализ кодастатический анализ кода
статический анализ кодаAndrey Karpov
 
"Погружение в Robolectric" Дмитрий Костырев (Avito)
"Погружение в Robolectric"  Дмитрий Костырев (Avito)"Погружение в Robolectric"  Дмитрий Костырев (Avito)
"Погружение в Robolectric" Дмитрий Костырев (Avito)AvitoTech
 
TypeScript: особенности разработки / Александр Майоров (Tutu.ru)
TypeScript: особенности разработки / Александр Майоров (Tutu.ru)TypeScript: особенности разработки / Александр Майоров (Tutu.ru)
TypeScript: особенности разработки / Александр Майоров (Tutu.ru)Ontico
 
PVS-Studio. Статический анализатор кода. Windows/Linux, C/C++/C#
PVS-Studio. Статический анализатор кода. Windows/Linux, C/C++/C#PVS-Studio. Статический анализатор кода. Windows/Linux, C/C++/C#
PVS-Studio. Статический анализатор кода. Windows/Linux, C/C++/C#Andrey Karpov
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyRegn
 
Roslyn API : SyntaxTree vs CodeDom, SemanticModel vs Reflection
Roslyn API: SyntaxTree vs CodeDom, SemanticModel vs ReflectionRoslyn API: SyntaxTree vs CodeDom, SemanticModel vs Reflection
Roslyn API : SyntaxTree vs CodeDom, SemanticModel vs ReflectionDenis Tsvettsih
 
Юнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, GoogleЮнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, Googleyaevents
 
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...OdessaFrontend
 
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Platonov Sergey
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй этоRoman Dvornov
 
Java осень 2014 занятие 6
Java осень 2014 занятие 6Java осень 2014 занятие 6
Java осень 2014 занятие 6Technopark
 
Java весна 2013 лекция 9
Java весна 2013 лекция 9Java весна 2013 лекция 9
Java весна 2013 лекция 9Technopark
 
Deep Dive C# by Sergey Teplyakov
Deep Dive  C# by Sergey TeplyakovDeep Dive  C# by Sergey Teplyakov
Deep Dive C# by Sergey TeplyakovAlex Tumanoff
 
Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?Andrey Karpov
 

Ähnlich wie NetworkUA - 2012 - Introduction TypeScript (20)

Lift, play, akka, rails part1
Lift, play, akka, rails part1Lift, play, akka, rails part1
Lift, play, akka, rails part1
 
C#. От основ к эффективному коду
C#. От основ к эффективному кодуC#. От основ к эффективному коду
C#. От основ к эффективному коду
 
Multithreading in java past and actual
Multithreading in java past and actualMultithreading in java past and actual
Multithreading in java past and actual
 
Принципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioПринципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-Studio
 
C# Deep Dive
C# Deep DiveC# Deep Dive
C# Deep Dive
 
статический анализ кода
статический анализ кодастатический анализ кода
статический анализ кода
 
"Погружение в Robolectric" Дмитрий Костырев (Avito)
"Погружение в Robolectric"  Дмитрий Костырев (Avito)"Погружение в Robolectric"  Дмитрий Костырев (Avito)
"Погружение в Robolectric" Дмитрий Костырев (Avito)
 
TypeScript: особенности разработки / Александр Майоров (Tutu.ru)
TypeScript: особенности разработки / Александр Майоров (Tutu.ru)TypeScript: особенности разработки / Александр Майоров (Tutu.ru)
TypeScript: особенности разработки / Александр Майоров (Tutu.ru)
 
PVS-Studio. Статический анализатор кода. Windows/Linux, C/C++/C#
PVS-Studio. Статический анализатор кода. Windows/Linux, C/C++/C#PVS-Studio. Статический анализатор кода. Windows/Linux, C/C++/C#
PVS-Studio. Статический анализатор кода. Windows/Linux, C/C++/C#
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на Groovy
 
Roslyn API : SyntaxTree vs CodeDom, SemanticModel vs Reflection
Roslyn API: SyntaxTree vs CodeDom, SemanticModel vs ReflectionRoslyn API: SyntaxTree vs CodeDom, SemanticModel vs Reflection
Roslyn API : SyntaxTree vs CodeDom, SemanticModel vs Reflection
 
Bytecode
BytecodeBytecode
Bytecode
 
Юнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, GoogleЮнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, Google
 
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
 
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй это
 
Java осень 2014 занятие 6
Java осень 2014 занятие 6Java осень 2014 занятие 6
Java осень 2014 занятие 6
 
Java весна 2013 лекция 9
Java весна 2013 лекция 9Java весна 2013 лекция 9
Java весна 2013 лекция 9
 
Deep Dive C# by Sergey Teplyakov
Deep Dive  C# by Sergey TeplyakovDeep Dive  C# by Sergey Teplyakov
Deep Dive C# by Sergey Teplyakov
 
Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?
 

Mehr von Dmytro Mindra

Introduction to Value Planning for iHUB
Introduction to Value Planning for iHUBIntroduction to Value Planning for iHUB
Introduction to Value Planning for iHUBDmytro Mindra
 
Mastering public speaking skills
Mastering public speaking skillsMastering public speaking skills
Mastering public speaking skillsDmytro Mindra
 
XP Days Ukraine 2014 - Refactoring legacy code
XP Days Ukraine 2014 - Refactoring legacy codeXP Days Ukraine 2014 - Refactoring legacy code
XP Days Ukraine 2014 - Refactoring legacy codeDmytro Mindra
 
Odessa .NET User Group - Kinect v2
Odessa .NET User Group - Kinect v2Odessa .NET User Group - Kinect v2
Odessa .NET User Group - Kinect v2Dmytro Mindra
 
Building Windows Phone 8 Games With Unity3d
Building Windows Phone 8 Games With Unity3dBuilding Windows Phone 8 Games With Unity3d
Building Windows Phone 8 Games With Unity3dDmytro Mindra
 
IT Brunch - SpecFlow and Gherkin by Example
IT Brunch - SpecFlow and Gherkin by ExampleIT Brunch - SpecFlow and Gherkin by Example
IT Brunch - SpecFlow and Gherkin by ExampleDmytro Mindra
 
Odessa Pluralsight Study Group 28.11.2012
Odessa Pluralsight Study Group 28.11.2012Odessa Pluralsight Study Group 28.11.2012
Odessa Pluralsight Study Group 28.11.2012Dmytro Mindra
 
Тестируем код с Visual Studio 2012 - XP Days Ukraine 2012
Тестируем код с Visual Studio 2012 - XP Days Ukraine 2012Тестируем код с Visual Studio 2012 - XP Days Ukraine 2012
Тестируем код с Visual Studio 2012 - XP Days Ukraine 2012Dmytro Mindra
 
Compilable Specifications - XPDays Ukraine 2012
Compilable Specifications - XPDays Ukraine 2012Compilable Specifications - XPDays Ukraine 2012
Compilable Specifications - XPDays Ukraine 2012Dmytro Mindra
 
Lean Lego Game for Agileee 2012
Lean Lego Game for Agileee 2012Lean Lego Game for Agileee 2012
Lean Lego Game for Agileee 2012Dmytro Mindra
 
Lohika .Net Day - What's new in Windows Azure
Lohika .Net Day - What's new in Windows AzureLohika .Net Day - What's new in Windows Azure
Lohika .Net Day - What's new in Windows AzureDmytro Mindra
 
Web В РЕАЛЬНОМ ВРЕМЕНИ С Node.js - AgileBaseCamp - 2012
Web В РЕАЛЬНОМ ВРЕМЕНИ С Node.js - AgileBaseCamp - 2012Web В РЕАЛЬНОМ ВРЕМЕНИ С Node.js - AgileBaseCamp - 2012
Web В РЕАЛЬНОМ ВРЕМЕНИ С Node.js - AgileBaseCamp - 2012Dmytro Mindra
 
Windows Azure & NodeJS Microsoft SWIT 2012
Windows Azure & NodeJS Microsoft SWIT 2012 Windows Azure & NodeJS Microsoft SWIT 2012
Windows Azure & NodeJS Microsoft SWIT 2012 Dmytro Mindra
 
Lean Software Development
Lean Software DevelopmentLean Software Development
Lean Software DevelopmentDmytro Mindra
 
Craftsmanship - XP Days 2011
Craftsmanship - XP Days 2011Craftsmanship - XP Days 2011
Craftsmanship - XP Days 2011Dmytro Mindra
 
Odessa .NET User Group - 10.11.2011 - Applied Code Generation
Odessa .NET User Group - 10.11.2011 - Applied Code Generation Odessa .NET User Group - 10.11.2011 - Applied Code Generation
Odessa .NET User Group - 10.11.2011 - Applied Code Generation Dmytro Mindra
 
IT Brunch - 12.11.2011 - Myths about Design
IT Brunch - 12.11.2011 - Myths about DesignIT Brunch - 12.11.2011 - Myths about Design
IT Brunch - 12.11.2011 - Myths about DesignDmytro Mindra
 
NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET Dmytro Mindra
 

Mehr von Dmytro Mindra (20)

Introduction to Value Planning for iHUB
Introduction to Value Planning for iHUBIntroduction to Value Planning for iHUB
Introduction to Value Planning for iHUB
 
Mastering public speaking skills
Mastering public speaking skillsMastering public speaking skills
Mastering public speaking skills
 
XP Days Ukraine 2014 - Refactoring legacy code
XP Days Ukraine 2014 - Refactoring legacy codeXP Days Ukraine 2014 - Refactoring legacy code
XP Days Ukraine 2014 - Refactoring legacy code
 
Odessa .NET User Group - Kinect v2
Odessa .NET User Group - Kinect v2Odessa .NET User Group - Kinect v2
Odessa .NET User Group - Kinect v2
 
Building Windows Phone 8 Games With Unity3d
Building Windows Phone 8 Games With Unity3dBuilding Windows Phone 8 Games With Unity3d
Building Windows Phone 8 Games With Unity3d
 
IT Brunch - SpecFlow and Gherkin by Example
IT Brunch - SpecFlow and Gherkin by ExampleIT Brunch - SpecFlow and Gherkin by Example
IT Brunch - SpecFlow and Gherkin by Example
 
Odessa Pluralsight Study Group 28.11.2012
Odessa Pluralsight Study Group 28.11.2012Odessa Pluralsight Study Group 28.11.2012
Odessa Pluralsight Study Group 28.11.2012
 
Тестируем код с Visual Studio 2012 - XP Days Ukraine 2012
Тестируем код с Visual Studio 2012 - XP Days Ukraine 2012Тестируем код с Visual Studio 2012 - XP Days Ukraine 2012
Тестируем код с Visual Studio 2012 - XP Days Ukraine 2012
 
Compilable Specifications - XPDays Ukraine 2012
Compilable Specifications - XPDays Ukraine 2012Compilable Specifications - XPDays Ukraine 2012
Compilable Specifications - XPDays Ukraine 2012
 
Lean Lego Game for Agileee 2012
Lean Lego Game for Agileee 2012Lean Lego Game for Agileee 2012
Lean Lego Game for Agileee 2012
 
Lohika .Net Day - What's new in Windows Azure
Lohika .Net Day - What's new in Windows AzureLohika .Net Day - What's new in Windows Azure
Lohika .Net Day - What's new in Windows Azure
 
Web В РЕАЛЬНОМ ВРЕМЕНИ С Node.js - AgileBaseCamp - 2012
Web В РЕАЛЬНОМ ВРЕМЕНИ С Node.js - AgileBaseCamp - 2012Web В РЕАЛЬНОМ ВРЕМЕНИ С Node.js - AgileBaseCamp - 2012
Web В РЕАЛЬНОМ ВРЕМЕНИ С Node.js - AgileBaseCamp - 2012
 
Windows Azure & NodeJS Microsoft SWIT 2012
Windows Azure & NodeJS Microsoft SWIT 2012 Windows Azure & NodeJS Microsoft SWIT 2012
Windows Azure & NodeJS Microsoft SWIT 2012
 
Lean Software Development
Lean Software DevelopmentLean Software Development
Lean Software Development
 
Craftsmanship - XP Days 2011
Craftsmanship - XP Days 2011Craftsmanship - XP Days 2011
Craftsmanship - XP Days 2011
 
Agile architecture
Agile architectureAgile architecture
Agile architecture
 
DCI
DCIDCI
DCI
 
Odessa .NET User Group - 10.11.2011 - Applied Code Generation
Odessa .NET User Group - 10.11.2011 - Applied Code Generation Odessa .NET User Group - 10.11.2011 - Applied Code Generation
Odessa .NET User Group - 10.11.2011 - Applied Code Generation
 
IT Brunch - 12.11.2011 - Myths about Design
IT Brunch - 12.11.2011 - Myths about DesignIT Brunch - 12.11.2011 - Myths about Design
IT Brunch - 12.11.2011 - Myths about Design
 
NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET
 

NetworkUA - 2012 - Introduction TypeScript

  • 1. ВВЕДЕНИЕ В TypeScript Дмитрий Миндра LOHIKA, Одесса
  • 2.
  • 4. Зачем ?  Для построения масштабируемых и поддерживаемых систем  Для облегчения поддержки кода  TypeScript – «опционально» типизированный язык  Полностью совместим с JavaScript и является его надмножеством.  Компилируется в JavaScript  OpenSource
  • 5. Node.js С чего начать ? npm install –g typescript tsc source.ts Visual Studio 2012 Plugin is available
  • 6. Расширения файлов *.ts – исходный код TypeScript • *.d.ts – TypeScript definition files
  • 7. Декларации • TypeScript всего лишь описывает контракты динамических типов, облегчая разработку. • Файлы с декларайиями позволяют описать типы как заголовочные файлы в C++ • Intellisense будет корректно давать подсказки • Файлы для DOM и jQuery идут в поставке с TypeScript (lib.d.ts). • Сообщество активно пишет декларации для стандартных библиотек.
  • 8. Инструментальная поддержка • Статическая проверка типов • Навигация по символам • Intellisense • Рефакторинг
  • 9. Аннотации типов function multiply(a: number, b: number) { return a * b; } • Тип возвращаемого значения будет выведен. • Постфиксная запись :number • Есть опциональные параметры ?:number
  • 10. Типы Тип Any является общим предком для всех типов и может хранить любой тип JavaScript без каких-либо ограничений. Простые типы:  number  bool  String  null  undefined Объекты:  Классы, модули, интерфейсы  Типизированные массивы var employees : Employee[] = [];
  • 11. Лямбды () => { console.log(“It’s Saturday!”)} setTimeout(() => { alert(this.message); }, 3000); (x) => { return Math.sin(x); } (x) => Math.sin(x) x => { return Math.sin(x); } x => Math.sin(x)
  • 12. Type Assertions function createShape(kind: string): Shape var circle = <Circle> createShape("circle"); • Не является приведением типов, и не проверяется во время выполнения.
  • 13. Интерфейсы  Интерфейсы могут расширять друг друга  Для интерфейсов не генерируется JavaScript interface Mover interface Shaker { { move(): void; shake(): void; getStatus(): { speed: number; }; getStatus(): { speed: number; }; } } interface MoverShaker extends Mover, Shaker { getStatus(): { speed: number; frequency: number; }; }
  • 14. Интерфейс interface StringComparer { (a: string, b: string): number; } А это будет функция, принимающая два строковых параметра и возвращающая числовое значение.
  • 15. Ambient Declarations declare var document:Document; Мы вводим переменную в TypeScript, хотя она объявлена где-то в другом месте. Код для таких объявлений не генерируется.
  • 16. Классы var Lottery = (function () { function Lottery(secret) { class Lottery { this.secret = secret; constructor (private secret: number) { } } Lottery.prototype.gamble = function (guess) { public gamble(guess: number) { if(guess == this.secret) { if (guess == this.secret) console.log('win'); console.log('win'); } else { else console.log('loose'); console.log('loose') } } }; private showSecret() { Lottery.prototype.showSecret = console.log('secret'); function () { } console.log('secret'); } }; return Lottery; })();
  • 17. Классы • Есть public и private модификаторы. • Объявление и инициализация полей через параметры конструктора. • Обращение к родительскому классу через super
  • 18. Модули module M { var s = "hello"; export function f() { return s; } } M.f(); M.s; // Error, s is not exported
  • 19. Зависимости Reference comment /// <reference path="Common.ts" /> Import declaration import mod = module("saturday"); var modspeaker = new mod.Speaker();
  • 20. Source Map tsc -sourcemap file.ts В отладчике виден TypeScript вместо скомпилированного JavaScript. Работает в Google Chrome Пока что не интегрировано в Visual Studio
  • 22. Недостатки TypeScript Состояние Preview Необходимость компиляции Не полная совместимость с JavaScript Возможное разветвление с ECMAScript
  • 23. Спасибо ! https://github.com/DmytroMindra/NetworkUA-2012-TypeScriptGame Great presentation by Ben Smith http://10consulting.com/2012/10/12/introduction-to-typescript- presentation/ Documentation http://www.typescriptlang.org/Content/TypeScript%20Language%20Sp ecification.pdf Official Website http://www.typescriptlang.org Anders Hejlsberg: Introducing TypeScript