Viktor
А что, если дефолтные параметры для разных фабрик изменятся?
Viktor
Nikita
не знаю, как по мне юзание this в реакт компонентах выглядит не очень красиво
Denis
Nikita
Nikita
разницы между классами в этом кейсе нету
Denis
Классы - это и есть функции
Viktor
можешь что угодно передеать, это ведь функции
Я понял. Я в принципе работаю с тем же подходом (функции-конструкторы), только у меня функции используют destructuring входных параметров, и после объема внутренней логики возвращают public API.
В принципе то же наследование и без классов тут доступно.
Denis
Конечно доступно. Но как мы видим из примеров - код короче
Viktor
На мой взгляд, это очень специфический и сжатый пример)
Denis
Скажи Никита, а если их 50, ты тоже их в одном файле будешь писать?
Denis
Denis
Но типизация конструктора - рабочая
Viktor
Код на полноценном толстом классе будет пожирнее. Я не к тому, что меня особо волнует классы или не классы. Для меня вообще принципиальной разницы нет. Просто функции-конструкторы я начал использовать чаще классов за последнее время, и выглядит это довольно естественно и беспроблемно: та же заглавно названная функция, минус конструктор, минус this
Denis
Viktor
Кстати, в rxjs7, который еще не вышел, отказались от них с целью минимизации веса бандла. В версии 6 ушли в сторону pipe(...operators) вместо .operator().operator()... из-за проблем с декомпозицией функционала в контексте классов и худшего тришэйкинга (автор библиотеки об этом рассказывал на выступлении)
Viktor
В 7й версии теперь Observable/Subject будут создаваться без new (хотя техничечки с new вернется все тот же непримитив - plain API object :) )
Dika
Viktor
А кстати почему нельзя все входные параметры просто засунуть в словарь
Dika
Dika
тут какая-то рантайм валидация для бедных
Denis
Мне нужна рантайм
Denis
Пользователь будет создавать классы
Dika
это не будет типизироваться
Denis
Будет
Denis
Уже типизируется
Denis
Я и не собираюсь
Maksim
Эх, как же всякие популярные библиотеки обходятся без рантайм чекинга типов аргументов конструктора, вот дураки
Denis
Maksim
Не говори
Viktor
Я в целом думаю, что статическими типами можно покрыть внутреннюю кодовую базу проекта и быть уверенным в соответствии всех входных/выходных типов данных (у классов, методов, функций). Вот на внешние api динамические проверки уже как раз совершенно востребованы
Viktor
Ну это в целом лишь мои наблюдения
Dika
для внешних можно взять нормальные либы для валидации
Viktor
Да
Viktor
Я о том же
Viktor
А внутри если используется ts/flow, tdd, то проблем не должно быть
Denis
У меня больше половины внешних данных. Тонкий же клиент
Denis
Я не понимаю, почему все так парятся с клонированием?
Denis
Ведь
javascript
clone = (obj) => {
const newObj = {}
for (val in obj) {
newObj[val] = obj[val]
}
return newObj
}
Syntax Highlight Bot
Anonymous
Anonymous
Anonymous
ничем не лучше { ...obj } или Object.assign. Я бы даже сказал хуже, так как не учитывает Symbols
Dika
Denis
Ну это на коленке сходу
Anonymous
Denis
Denis
Знал что есть подвох))
Anonymous
Я смотрю ты любишь велосипедирование
Denis
Denis
Даже зимой катался ))
Dika
Anonymous
Но самая жеть конечно, когда пишут JSON.parse(JSON.stringify(a));
Denis
Anonymous
А вот за такое бъют долго и больно)
Denis
https://stackoverflow.com/posts/9772788/revisions
Denis
Denis
Андрей
Denis
Denis
Андрей
Denis
Андрей
Denis
Новые инстансы классов
Denis
В чем проблема то?
Denis
Нельзя уже new делать?
Anonymous
Проблема в том, что когда ты делаешь:
class TypedEntity extends BaseClass {
get args () {
...
}
}
ты уже не можешь наследоваться от другого класса. К тому же я не могу понять зачем геттер экземпляра используется? В prop-types ты хотя бы можешь сделать так:
class TypedEntity extends Component {
static props = {
...
}
}
тоже не ахти, но хотя бы более идеоматично и удобно, потому что ты можешь props вынести за пределы класса
Denis
У меня classProperties нету.