Size: a a a

Software Design/Architecture/Zen

2021 June 25

КГ

Константин Грачев... in Software Design/Architecture/Zen
Сам себя не уволишь
источник

SZ

Sergey Zolotov in Software Design/Architecture/Zen
ну я конечно понимаю что это какой-то демо проект) но зачем
источник

SZ

Sergey Zolotov in Software Design/Architecture/Zen
даже склонирую в IDE посмотрю нормальном
источник

КГ

Константин Грачев... in Software Design/Architecture/Zen
эм, вроде это либа, которой хватит всем..
источник

Kd

Konstantin dmz9 in Software Design/Architecture/Zen
форматирование вышло из чата
источник

АП

Алексей Попов... in Software Design/Architecture/Zen
Акула не читатель, акула писатель
источник

Kd

Konstantin dmz9 in Software Design/Architecture/Zen
ну да интересно разобрать, но блин пока работа >.<
источник

˸A

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

SZ

Sergey Zolotov in Software Design/Architecture/Zen
я б уже уволил нахуй
источник

SZ

Sergey Zolotov in Software Design/Architecture/Zen
ладно давай по существу
источник

SZ

Sergey Zolotov in Software Design/Architecture/Zen
если типы тут довольно простые
export type ItemRO = { readonly id: string }
export type PriceRO = { readonly price: number }
export type QtyRO = { readonly qty: number }
export type ShippingRO = { readonly shipping: number }
источник

SZ

Sergey Zolotov in Software Design/Architecture/Zen
T extends ItemQtyRO & TotalRO

зачем так сильно упарываться с генериками если у можно выехать на штатном пересечении?
источник

SZ

Sergey Zolotov in Software Design/Architecture/Zen
ну и сами типы не оч понятны разделения. почему не вывести явные модели { id, price } и { id, price, qty } условно
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
Для OCP - чтоб можно было больше полей передавать во все функции
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
не хотел плодить типов на все комбинации полей - только самые используемые. У меня даже где-то там есть Qty & Total (без {id: string}). Если функции не нужно для работы какого-то поля, то и тип соответствующий
источник

SZ

Sergey Zolotov in Software Design/Architecture/Zen
type ItemRO = { readonly id: string }
function trololo(a: ItemRO) {
   console.log(a.id)
}

function trololo2(a: { id: string }) {
   console.log(a.id)
}

const myVar = {id: "5", trololo: "aa"}

trololo(myVar)
trololo2(myVar)
источник

SZ

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

SZ

Sergey Zolotov in Software Design/Architecture/Zen
ну и чисто технически ты и наплодил комбинации полей)
export type ItemQtyRO = ItemRO & QtyRO
export type ItemTotalRO = ItemRO & TotalRO
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
Это да. Но там вся "соль" в infer типа результата - чтоб эти доп. поля в результате тоже остались. Поэтому и дженерики
(property) total: <U extends ItemTotalRO, T extends ItemsRO<U>>(documents: readonly T[]) => U[]

А ещё в некоторых случаях их явно приходится указывать - поэтому без них никак
источник

SZ

Sergey Zolotov in Software Design/Architecture/Zen
ну т.е ты только в reduce генерик упираешься?
источник