Как стать автором
Обновить
-7
0
Виталий Архипов @arvitaly

Программист

Отправить сообщение

Проверка JSON при помощи декораторов в TypeScript

Время на прочтение 3 мин
Количество просмотров 9.4K
Я очень люблю статические типы, поэтому TypeScript стал незаменимым помощником при работе с NodeJS или браузерным JS.

По долгу службы приходится иметь очень много дел с JSON, и здесь система типов TypeScript не помогает ничем, даже мешает, ведь компилятор сообщает об отсутствии ошибок, JSON.parse возвращает тип Any. Кроме того, TypeScript не поддерживает рефлексию, ввиду специфики работы, а значит, нет возможности проверить тип, основываясь на уже существующем коде. Также, до последнего времени, средств для мета-программирования не было вовсе.

Зачастую проверка корректности пришедшего JSON-объекта оборачивается громадным кодом в конструкторах классов, либо такими же конфигурационными файлами. Но, наконец-то, в TypeScript 1.5 появились декораторы.

Декораторы позволяют выполнить некие манипуляции с классом, методом, свойством или параметром во время их объявления, при этом возможна передача дополнительной информации о декорируемом объекте. Этим я и воспользовался.
Читать дальше →
Всего голосов 16: ↑13 и ↓3 +10
Комментарии 2

Браузер дешевле светофора

Время на прочтение 4 мин
Количество просмотров 18K
Я уже с 25 февраля завидую этим владельцам светофора. В целом визуализация мониторинга всегда была для меня интереснее, чем уведомления по почте или смс. Но все сводилось к отдельной страничке с состоянием системы, на которую нужно было заходить для проверки. А вот после прочтения поста и осознания, что светофор слишком экстравагантный инструмент, появилась интересная мысль — реализовать светофор в браузере! Ведь сейчас мы практически каждые несколько минут открываем браузер за тем или иным.

Подробности под катом.
Читать дальше →
Всего голосов 26: ↑21 и ↓5 +16
Комментарии 22

Информация

В рейтинге
Не участвует
Откуда
Таиланд, Таиланд
Зарегистрирован
Активность

Специализация

Frontend Developer, Fullstack Developer
Lead
JavaScript
HTML
CSS
React
TypeScript
Node.js
Adaptive layout
Crossbrowser layout
Web development
Webpack