Антон Спирин, да, здесь в целом согласен, со статической проще вкатываться в проект, а новые разработчики с меньшей вероятностью натворят дел, т.к. у них банально будет меньше возможностей их натворить. Я написал все вышенаписанное к тому, что бороться с динамической типизацией вовсе ни к чему, при том, что автор пишет проект в одиночку. Ведь вместо этого ее можно понимать и использовать, или, как минимум, не позволять ей портить себе жизнь. Тем паче, что она дает порой невероятно красивые конструкции, например, const a = b || null или if(!property).
Антон Спирин, это все равно, как ни крути, вариация защиты от дурака. В целом, совершить ошибку со слабой типизацией не сложнее, чем забыть запятую или поставить "=" вместо "==". Да, можно стать джедаем, но можно быть внимательнее или попросить IDE подсвечивать "==" другим цветом.
Чтобы не было проблем с типизацией, стоит:
- использовать const так часто, как только можно
- одно свойство - одна переменная, избегать переопределения переменных далее по коду (в этом и помогает const)
- все свойства получать через геттеры, в геттерах отдавать корректные значения или null
- это же относится и к свойствам классов, реже использовать this.property, чаще - this.getProperty(), заодно можно заблокировать возможность некорректного случайного изменения this.property соотв. сеттером
- делать функции маленькими, чтобы в них было немного переменных
- давать переменным удобоваримые названия, в комментах помечать, какого они типа, код должен быть самодокументируемым
- в нужных местах проводить проверки, приводить к нужному типу явно: нужно число, используй parseInt и проверь, что parseInt вернула корректное число (в геттере или перед использованием)
В итоге, когда, например в PHP включаю строгую типизацию, для меня процесс разработки не меняется. Ошибок новых не возникает - ведь их и не было. А всего-то надо изначально писать код корректно.
> к глобальному объекту window
Window характерен только для браузера. Исправить можно, удаляйте этот плагин и идите юзать консоль в браузере. А то, боюсь, начнете пытаться обращаться к саблаймовому DOM, и проблем только прибавится.
А если пользователь изменит сохраненные права? Я, конечно, проверю, но поскольку рендеринг клиентский, юзер увидит админское меню перед запросом за данными. Не то чтобы это была дыра, но это некрасиво.
А зачем так извращаться? Кидайте в телегу ссылки на посты в WP. Так многие делают. Вообще не вижу проблемы. Ссылка на дубль контента, но с комментариями - имхо, глупость и не юзабельно. Что таког овы пишете, что пользователь настолько горит желанием откомментить скорее, что перейдет и напишет коммент?
Станислав, по-моему, у вас проблема в редьюсере. Подебажьте, сделайте console.log того, что у вас приходит туда в action, лично я ожидаю корректные данные там. Потому что, раз у вас по типам все разделено, даже асинхронность обновления стейта не должна на это влиять. Мне кажется, что проблема как раз в куске кода с компаниями и типом.
Можно использовать GROUP BY, но это не решает проблему с попаданием ID 2 в результирующий сет.