Григорий Петров
TypeScript
Кому нужна строгая типизация?
Что сейчас будет?
Рассказывает Григорий Петров
Специализация Руководство разработкой
Чем занимается Частный консультант
Опыт Более 15 лет
Время выступления 15 минут
Вопросы В конце выступления, 5 минут
2
Кошелек Миллера
3
Картина пишется мазками
4
Проблема сложности
- Набрали технического долга
- Не угадали с архитектурой
- Не нашли время на рефакторинг
- ...
5
Статическая типизация
Защита на этапе отдельных мазков.
6
Статическая типизация
Защита на этапе отдельных мазков.
Пока мы держим в голове, как оно работает.
7
Например
Users.prototype.isUsersActive = function() {
return this._isActive && this._usersCount > 0;
}
Core.prototype.isBusy = function() {
var conditions = [
…
{flag: Users.isUsersActive(), info: "active users"},
];
return _.any(conditions, {flag: true});
}
8
Например
Users.prototype.isUsersActive = function() {
+ return this._isActive && this._usersCount > 0;
- return _.find(this._users, (user) => { return user.isActive(); });
}
Core.prototype.isBusy = function() {
var conditions = [
…
{flag: Users.isUsersActive(), info: "active users"},
];
return _.any(conditions, {flag: true});
}
9
Например
Users.prototype.isUsersActive = function() {
return _.find(this._users, (user) => { return user.isActive(); });
}
Core.prototype.isBusy = function() {
var conditions = [
…
{flag: Users.isUsersActive(), info: "active users"},
];
return _.any(conditions, {flag: true});
}
10
Например
Users.prototype.isUsersActive = function(): boolean {
return _.find(this._users, (user) => { return user.isActive(); });
}
Core.prototype.isBusy = function() {
var conditions = [
…
{flag: Users.isUsersActive(), info: "active users"},
];
return _.any(conditions, {flag: true});
}
11
Как это ловит TypeScript
12
Все имеет свою цену
- Обучение разработчиков
- Избыточная защита - больше кода
- Замедляет начальную разработку
13
Опциональная типизация
Лучшее из двух миров: накладываем защиту
только там, где она нужна.
14
Опциональная типизация
- Быстрая фаза разработки: защита только
в уязвимых местах
- Стабильный модуль - больше защиты
15
Что защищать в первую очередь?
- сигнатуры публичных методов
- .d.ts для библиотек
16
Вывод
Замечательный инструмент, если без
фанатизма
17
Это все на сегодня
Теперь можно задавать вопросы.
Рассказывал и показывал Григорий Петров
grigory.v.p@gmail.com
http://facebook.com/grigoryvp
18

«Typescript: кому нужна строгая типизация?», Григорий Петров, MoscowJS 21