Skip to content

fix(object/groupBy): add types overload for arrays #58

Merged
merged 4 commits into from
Sep 10, 2020

Conversation

SuperOleg39
Copy link
Contributor

No description provided.

Copy link

@ZigGreen ZigGreen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

а не проще ли просто подпилить ObjBaseBy?

export type ObjBaseBy<O extends (Record<any, any> | any[]), R> = (value: O extends any[] ? O[number] : O[keyof O], key: keyof O & string, obj: O) => R;

@SuperOleg39 SuperOleg39 force-pushed the fix-object-group-by-types branch from ace54e7 to d8bac78 Compare September 9, 2020 08:45
@meskill
Copy link
Contributor

meskill commented Sep 9, 2020

а не проще ли просто подпилить ObjBaseBy?

export type ObjBaseBy<O extends (Record<any, any> | any[]), R> = (value: O extends any[] ? O[number] : O[keyof O], key: keyof O & string, obj: O) => R;

@ZigGreen ну так проще, но базой для utils было то что объекты и масивы это разные структуры и с ними надо работать по-разному
Сейчас этот тип много где используется в утилитах и не факт что там всё ок с кейсами массивов и поэтому считаю излишним на данном этапе вносить изменения в базовый тип

@SuperOleg39
Copy link
Contributor Author

а не проще ли просто подпилить ObjBaseBy?

export type ObjBaseBy<O extends (Record<any, any> | any[]), R> = (value: O extends any[] ? O[number] : O[keyof O], key: keyof O & string, obj: O) => R;

@ZigGreen ну так проще, но базой для utils было то что объекты и масивы это разные структуры и с ними надо работать по-разному
Сейчас этот тип много где используется в утилитах и не факт что там всё ок с кейсами массивов и поэтому считаю излишним на данном этапе вносить изменения в базовый тип

кстати это сломало типы в object/pickBy, так что откатить придется

@ZigGreen
Copy link

ZigGreen commented Sep 9, 2020

кстати это сломало типы в object/pickBy, так что откатить придется

Да, я видел. Надо починить

объекты и масивы это разные структуры и с ними надо работать по-разному

в данном случае вообще проблем не вижу, есличетсно. Пусть для удобства ObjBaseBy работает и с массивом корректно. Все равно из названия нифига не понтно)

@SuperOleg39
Copy link
Contributor Author

Не вижу смысла чинить, когда можно предотвратить) И я не уверен, что каждый метод из object/* корректно отработает с массивами

@ZigGreen
Copy link

ZigGreen commented Sep 9, 2020

Смысл в том, что на массив всегда можно смотреть на на объект => все методы над объектом должны работать и с массивом. А конструкции вида O[keyof O] это ломают.

@SuperOleg39 SuperOleg39 force-pushed the fix-object-group-by-types branch from 50cd059 to 84bd700 Compare September 9, 2020 10:39
@ZigGreen
Copy link

ZigGreen commented Sep 9, 2020

+ имеет ли смысл просто написать джинерик тип для карирования?

curry2<T1, T2, T3>(fn: (a: T1, b: T2) => T3): (a: T1) => (b: T2) => T3

@SuperOleg39
Copy link
Contributor Author

Посмотри сейчас вариант, похоже на компромисс

@SuperOleg39 SuperOleg39 force-pushed the fix-object-group-by-types branch from 84bd700 to 82d4cbf Compare September 9, 2020 10:42
@SuperOleg39 SuperOleg39 requested a review from meskill September 9, 2020 15:16
@meskill meskill merged commit ed85e52 into Tinkoff:master Sep 10, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants