CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидах
1. TypeScript или JavaScript на
стероидах
author: {
name: "Сергей Пугачёв",
twitter: "@spugachev",
company: "Microsoft Россия"
};
2.
3. Сегодня я бы хотел
рассказать о
3 продуктах Microsoft…
4.
5. Douglas Adams
(автор «Автор автостопом по галактике»)
I've come up with a set of rules that describe our reactions to technologies:
1. Anything that is in the world when you’re born is normal
and ordinary and is just a natural part of the way the world
works.
2. Anything that's invented between when you’re fifteen
and thirty-five is new and exciting and revolutionary and
you can probably get a career in it.
3. Anything invented after you're thirty-five is against the
natural order of things.
6. TypeScript
Начинается с JavaScript
Весь JavaScript код является TypeScript кодом
Все JavaScript библиотеки работают с TypeScript
Опциональная статическая типизация, классы, модули
Хорошо подходит для масштабных приложений
Нет Runtime издержек. Статическая типизация исчезает в Runtime
Заканчивается на JavaScript
Компилируется в JavaScript
Запускается в любом браузере и любой ОС
7. TypeScript
Начинается с JavaScript
Весь JavaScript код является TypeScript кодом
Все JavaScript библиотеки работают с TypeScript
Опциональная статическая типизация, классы, модули
Хорошо подходит для масштабных приложений
Нет Runtime издержек. Статическая типизация исчезает в Runtime
Заканчивается на JavaScript
Компилируется в JavaScript
Запускается в любом браузере и любой ОС
28. Гибкость Производительность
“Think C++”“Think Script”
Простые сайты Сложные приложения, игры
var r = 3 * "10"; // r == 300
var a = new Array();
a.push(10);
var p = {x: 0, y: 0};
p.z = 5;
p["some text"] = 1;
p[1] = 2;
eval("var s = p[1] * a[0]"); // s == 20
var r = 3 * parseInt("10");
var a = new Array(100);
a[0] = 10;
var p = new Point(0, 0, 0);
p.z = 5;
32. Что мы выяснили
1. JavaScript – ассемблер Web’а
2. JavaScript сам по себе мощный язык, на котором можно
писать производительные приложения
3. JavaScript «не идеален» для создания больших проектов
44. Перегрузка
function numberStringSwap(value: number, radix?: number): string;
function numberStringSwap(value: string): number;
function numberStringSwap(value: any, radix: number = 10): any {
if (typeof value === 'string') {
return parseInt(value, radix);
}
else if (typeof value === 'number') {
return String(value);
}
}
45. Типы
var point: {
x: number;
y: number;
};
point = { x: 0, y: 0 }; // OK
point = { x: 0, y: 0, z: 0 }; // OK
point = { x: 'zero', y: 0 }; // Error
point = { x: 0 }; // Error