Pull to refresh
-7
0
Виталий Архипов @arvitaly

Программист

Send message

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

Reading time 3 min
Views 9.4K
Я очень люблю статические типы, поэтому TypeScript стал незаменимым помощником при работе с NodeJS или браузерным JS.

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

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

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

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

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

Подробности под катом.
Читать дальше →
Total votes 26: ↑21 and ↓5 +16
Comments 22

Information

Rating
Does not participate
Location
Таиланд, Таиланд
Registered
Activity

Specialization

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