Size: a a a

Software Design/Architecture/Zen

2021 June 25

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
Нет. В моих функциях тоже иногда явно приходится задавать дженерики
источник

SZ

Sergey Zolotov in Software Design/Architecture/Zen
я заметил)
источник

SZ

Sergey Zolotov in Software Design/Architecture/Zen
я ж за это и говорю. можно без них обходится ведь
источник

SZ

Sergey Zolotov in Software Design/Architecture/Zen
ну тип зачем
total: <T extends TotalRO>(documents: readonly T[]) => addPrices(...documents.map(({ total }) => total)),


если можно без генерика
total: (documents: readonly TotalRO[]) => addPrices(...documents.map(({ total }) => total)),
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
Нет. Если не задавать явно - потом вылазят ТС-ошибки. Вот прямо сейчас в ИДЕ убрал <V, U, V, U> - вылезла ошибка в стиле: "бла-бла-бла is assignable to the constraint of type 'I', but 'I' could be instantiated with a different subtype of constraint бла-бла-бла"
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
В этом конкретном случае - можно, да. Но это только в нескольких базовых функциях, которые не объекты возвращают - таких мало
источник

SZ

Sergey Zolotov in Software Design/Architecture/Zen
c reduce/fold везде жопа с выводом типов в статических языках

я б предпочел императивный for в пользу читаемости и упрощения типов почти во всех случаях
источник

SZ

Sergey Zolotov in Software Design/Architecture/Zen
и что самое забавное. из типов мясорубка, при этом на return сигнатурах везде вывод типов. что в целом считается не очень гут как для публичных интерфейсов

да и в целом для IDE/компилятора это сложнее и дольше. на проектах где хотя бы 100к строк кода это уже будет ощутимо неприятно
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
Ещё раз говорю, редьюс там не при чём к тому, что в моих функциях дженерики надо явно иногда передавать.
источник

SZ

Sergey Zolotov in Software Design/Architecture/Zen
тут конечно не redux редьюсеры, но смотреть на spread в жс коде немного дико после https://immerjs.github.io/immer/
источник

SZ

Sergey Zolotov in Software Design/Architecture/Zen
было б время б загнался и упростил бы все это, раз тесты есть) но пока некогда
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
Я ж не против. Наверное, с рамбдой было бы красивее. Только у меня by design: "zero production dependencies"
источник

SZ

Sergey Zolotov in Software Design/Architecture/Zen
у рамбды там совсем беда с типами, по крайней мере год назад было
источник

a

atcq (Алексей)... in Software Design/Architecture/Zen
но это же совсем разный код будет
источник

a

atcq (Алексей)... in Software Design/Architecture/Zen
как выше писали дополниые поля отвалятся
источник

a

atcq (Алексей)... in Software Design/Architecture/Zen
там даже не типы, а дебаг скорее проблемный, постоянно проваливаешься в кишки рамбды при отладке
источник

SZ

Sergey Zolotov in Software Design/Architecture/Zen
ну с addPrice там в результате у тебя в любом случае number. в каком плане отвалятся?
источник

SZ

Sergey Zolotov in Software Design/Architecture/Zen
эти два куска вообще идентичны
источник

AN

Alexander Nazarov in Software Design/Architecture/Zen
Я прям сохраню этот скриншот, и в рамочку поставлю.
источник

a

atcq (Алексей)... in Software Design/Architecture/Zen
если number, то да, я по ходу ошибся
источник