Nikolay
И сталкивался ещё с проблемой проверки типов при десериализации JSON. Можно очень весёлых багов нахвататься, если ты будешь работать с полем, как с числом, а в жсон тебе оно прелетело как строка
Фил Ранжин
Фил Ранжин
но ты все же не прав
Vasily
Эххх... растут детишки... вот уже писюнами начали меряться...
Фил Ранжин
я как раз про этот кейс и пишу
Nikolay
Мне нравится typescript, но он не интегрируется нормально с существующими решениями.
Фил Ранжин
Где почитать?
на хабре, выйдет через неделю
Nikolay
Фил Ранжин
Мне нравится typescript, но он не интегрируется нормально с существующими решениями.
вот это самое главное. Но для меня тут простой вывод - надо перепиливать их.
Фил Ранжин
Давай кинь, заценю
тебе сырую, или ссылку на хабр, когда выйдет?
Фил Ранжин
Сырую
ну подожди тогда до завтра, я как раз сегодня основной блок вкорячу
Nikolay
вот это самое главное. Но для меня тут простой вывод - надо перепиливать их.
Никто не будет этого делать, а пошлют писать на angular
Sergey
Утото тут кидал пикчу про тс и жс
Sergey
@angmarr помоему твоя пикча была😏
Фил Ранжин
Никто не будет этого делать, а пошлют писать на angular
на самом деле, почти всё новое пилится на тс или флоу
Фил Ранжин
для меня лично мощным сигналом, что тс охеренный был jsx
Фил Ранжин
бля, митинг
Фил Ранжин
ща объясню
Igor
@angmarr помоему твоя пикча была😏
Чет не помню такого, я вообще с *script завизал давно
Фил Ранжин
20 мин
Igor
для меня лично мощным сигналом, что тс охеренный был jsx
Говно - костыль , впрочем как TS сам по себе
Nikolay
Щас гляну код с tsx
Nikolay
Покажу :D
Ιπταμενο
Мужики вы чего
Ιπταμενο
Лучше с тс, чем совсем без линтера
Ιπταμενο
Совсем без линтера даже rename refactor не работает, просто ложишься в гроб и умираешь
Ιπταμενο
Чистый js это когда у тебя много времени на борьбу с инструментом
Sergey
Чет не помню такого, я вообще с *script завизал давно
Блин там чтото с конфеткой было жаль не схоронил
Igor
Чистый js это когда у тебя много времени на борьбу с инструментом
Такое бывает, когда на место язык для промышленной разработки берут скрипт.
Igor
Вот уже еще 20 лет замызывают все вот-зе-факи
Фил Ранжин
Ты про tsx?
короче. Я много писал на впф и замарине. На строгом шарпе. И вот в разметке тайпчек очень символический там. А в tsx - мощный. В костыльном вот этом вот тайпскрипте у меня лучше тайпчек, когда я пишу фронт.
Nikolay
Вот как у меня было interface IProps { dispatch?: Dispatch<any>; loading: boolean; previews: BlaBla[]; } class HomePage extends NavigateableComponent<IProps> { constructor(props: IProps) { super(props); props.dispatch(actions.action()); } } function mapStateToProps(store: IStore): IProps { return { loading: store.previews.isLoading, previews: store.previews.previews }; } const connectedHomePage = connect(mapStateToProps)(HomePage); export {connectedHomePage as HomePage}; Функция dispatch никогда не может быть null, но пришлось её сделать nullable потому, что в функции mapStateToProps возвращаются только изменённые пропсы, а если мы не хотим менять значение, тогда мы не должны передавать туда пропсу, и она не поменяется, но в таком случае строгая типизация будет требовать указания значения функции dispatch
Фил Ранжин
Partial<IProps>
George
или через перегрузку connect<IStoreProps, IDispatchProps, IOwnProps, IState>
Sergey
@angmarr нашель🌚
Sergey
TypeScript - это не ужас, а максимальное приближени JS к конфете
Sergey
https://www.hancocks.co.uk/media/catalog/product/cache/1/image/e4c35dd85cc90aaf08d78642d6b956d2/3/0/302160_giant_gummy_poo_j.jpg Ну ты понял
Nikolay
а ты не можешь поменять сигнатуру mapState2props?
Честно - не помню, давно проект делал
Vladyslav
вчера была скала, сегодня - тс
Nikolay
Помоему connect принимала тип any, так что в теории можно так сделать
Nikolay
Но, сам понимаешь, тип any убивает типизацию
Фил Ранжин
меня это пиздец бесит
Фил Ранжин
смотри
Nikolay
Тогда функция connect сама должна подсказывать
Фил Ранжин
у тебя есть сторонняя хуйня, которая принимает эни
Фил Ранжин
а ты знаешь, что именно ей скормить
Фил Ранжин
так хули ты, сделай d.ts
Фил Ранжин
опиши тип
Nikolay
опиши тип
Так я должен типы описывать, или разработчики d.ts?
Nikolay
Тут не всё так просто
Фил Ранжин
Nikolay
Там не получится так просто сделать
Фил Ранжин
короче, в тс делать any на внешнем апи, это как в F# наружу мутаблами торчать
George
в конце концов, с redux 4 более-менее неплохие тайпдефы подвезли
Nikolay
connect(mapStateToProps)(HomePage) Нужно вытащить generic тип из HomePage, и запихать его в connect.
Nikolay
Я хз как так сделать
Nikolay
Либо отдельной функцией как-то описывать
Nikolay
В любом случае, инструмент должен помогать тебе задачи решать, а не создавать новые
Nikolay
Когда все будут писать на TS, тогда и будет счастье, но никто этого не собирается делать
Nikolay
О дивный новый мир
Фил Ранжин
да и в целом, я бы не использовал редакс
J. A. R. Kotlien
Это уже легаси, так не пишут. Хуки уже все используют и там проблем нет, потому что хуки, это просто функции, которые ворзвращают результат.
2 приложения уже сделал на хуках, вообще проблем нет. Кому интересно, идеей для хуков отсюда https://github.com/ocamllabs/ocaml-effects-tutorial#2-effectful-computations-in-a-pure-setting вдохновлялись.
Фил Ранжин
да и в целом, я бы не использовал редакс
с точки зрения типизированного япа - это мусор
サイトー
с точки зрения типизированного япа - это мусор
а чо мусор то кстати типизируется отлично, а с 3.3 еще и очень ненавязчиво можно делать DU почти как настоящие
J. A. R. Kotlien
с точки зрения типизированного япа - это мусор
Элмиш ведь на таком же принципе сделан, не?