Тёмный
No video :(

Типизация для асинхронного Redux Toolkit 

Михаил Непомнящий
Подписаться 61 тыс.
Просмотров 25 тыс.
50% 1

TypeScript для asyncThunk или для асинхронной работы Redux Toolkit повышает надежность приложения и автоматически помогает определить тип пейлоада для редьюсеров. Типизация Redux еще никогда не была такой простой.
Ссылки из видео:
Код из видео github.com/mic...
Оригинальный проект github.com/mic...
Мои курсы по вебу с купонами:
✅ mishanep.com/
📢 Поддержка канала:
/ mishanep
www.tinkoff.ru...
paypal.me/mish...

Опубликовано:

 

10 май 2022

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 53   
@biLLie_wiLLie
@biLLie_wiLLie 2 года назад
Больше typescript, больше
@user-yb2uu5jt1b
@user-yb2uu5jt1b 2 года назад
Благодарю Михаил) Хотелось услышать из ваших уст о вебсокетах
@kirill_muz
@kirill_muz 8 месяцев назад
Спасибо за объяснения. На мой взгляд- это лучшее видео по разъяснению redux toolkit'а!)
@dmitry_nk2626
@dmitry_nk2626 2 года назад
Контент - просто огонь 🔥 Разобрано вдумчиво и по делу
@rusfungame
@rusfungame 2 года назад
Красавчик, видео спасло меня от бомбежки и разноса клавиатуры
@vladimirmuratov2220
@vladimirmuratov2220 2 года назад
Спасибо Вам за ваш труд... 😇
@vladimirrezvanov8276
@vladimirrezvanov8276 2 года назад
Блин, он лучший!
@user-vm2db5cq1g
@user-vm2db5cq1g Год назад
Отличный контент! Автору спасибо!
@anazkomult
@anazkomult 2 года назад
Большое спасибо тебе за уроки! Я на типизации asyncThunk конкретно встрял, хотел параметр action в экстраредюсерах типизировать, а оказывается надо через дженерик в сам createAsyncThunk...
@user-cg1pq2kh6t
@user-cg1pq2kh6t 5 месяцев назад
типизация выглядит как разгадывание ребусов, лишние проблемы себе придумали
@user-ud7oo6es4b
@user-ud7oo6es4b 2 года назад
Как раз то, что я искал, везде инфа про asyncThunk на TypeScript на английском
@aaaaaaaaaaaaaaaaa8296
@aaaaaaaaaaaaaaaaa8296 2 года назад
Огроооооомнейщее спасибо за ваш контент!
@user-kn3ut1sh2o
@user-kn3ut1sh2o 2 года назад
Спасибо! (TypeScript для asyncThunk)
@user-nj6dh2ck2y
@user-nj6dh2ck2y 2 года назад
Сэр, снимаю перед Вами шляпу!)
@dimalukashenko4865
@dimalukashenko4865 2 года назад
Круто, давно ждал такого рода видео
@artman9592
@artman9592 2 года назад
спасибо, так же ролик кстати!!! просьба по возможности добавить createSelector показать как это должно быть при фильтрации. Замечательный ролик P.S. просьба показать как делать на реселектах множественную живую фильтрацию с большими массивами данных (интернет магазин) без пересчёта селекторов фильтра где входящие переменный для фильтра не изменились
@user-np6fx3vq2s
@user-np6fx3vq2s Год назад
очень информативное видео!👍
@levensta
@levensta 2 года назад
Очень круто, было бы интересно еще послушать про библиотеку reselect
@biLLie_wiLLie
@biLLie_wiLLie 2 года назад
17:05 Откуда вы знали, что надо затипизировать action? Многое в TS выглядит пока для меня как магия. Треугольные скобки вырастают в самых неожиданных местах. Я не до конца понимаю логику типизации. Откуда появляется понимание, что именно вот этой конкретной штуке именно в этом место нужно еще дженериков написать?
@mishanep
@mishanep 2 года назад
Когда работаешь с TS библиотеками, то часто читаешь их dts файлы (хотя бы через ctrl+название метода в коде). И для каждого метода всегда видно, что он ожидает на вход и чего будет на выходе. Ну и документации официальные помогают.
@andrewsmal5173
@andrewsmal5173 2 года назад
Круто!
@VakiTaki
@VakiTaki Год назад
кайф. от души
@valentinprotasevich8696
@valentinprotasevich8696 Год назад
спасибо!
@user-fn4jw5nc3z
@user-fn4jw5nc3z 2 года назад
Хотелось бы, про express узнать, может не в тему, но интересно))
@user-fg7vi4gm5m
@user-fg7vi4gm5m Год назад
Видео супер! Но, ты слукавил, когда сказал что, блок с try catch убрал, потому что ловишь ошибку которую сам же и бросаешь). Давай будем честными, ты это сделал потому что такую конструкцию сложно типизировать, так как в JS с помощью throw можно бросить все что угодно. А вообще, хочу сказать спасибо за серию твоих видео!
@mishanep
@mishanep Год назад
Базовый подход для блока catch это проверка пойманной ошибки на соответствующий инстанс, будь то кастомная ошибка или какая другая. if (err instanceof Error) return something else throw err Особой сложности в этом нет.
@adamburke4496
@adamburke4496 9 месяцев назад
А как глобально задекларировать типы RootState и AppDispatch типы? Я пытаюсь вынести все в отдельный файл *.d.ts, через global declare { export type AppDispatch =...}, но ничего не работает.
@user-cg1pq2kh6t
@user-cg1pq2kh6t 5 месяцев назад
решил вопрос на 4 минуте, если честно, никак не могу привыкнуть к typescript.
@sergeypopov4238
@sergeypopov4238 Год назад
Так и не понял, почему в дженерике createasyncthunk первое передаваемое значение, это тип значения, которое ожидается вернуть, то есть массив Todo.
@hiddenlul556
@hiddenlul556 2 года назад
Михаил, а почему вы говорите что внутри createAsyncThunk можно отказаться от блока try catch? в офф документации он присутствует во все запросах на сервер...
@mishanep
@mishanep 2 года назад
Не совсем так. Я говорю, что при использовании браузерного метода fetch можно обойтись без try/catch. На практике никогда не сталкивался, чтобы fetch выбрасывал ошибки. Он в объекте респонса сообщит всё ли ок. Я видел примеры ручного выброса ошибок, когда ok !== true, но мне кажется это избыточным, если всё равно единственным действием в блоке catch является rejectWithValue. Если мы пользуемся не fetch, а другими инструментами для запросов к серверу, то проверка на ошибки уже более актуальна.
@killxflip8547
@killxflip8547 2 года назад
@@mishanep Не подскажете пожалуйста если использовать axios и try/catch каким образом можно типизировать error чтобы catch ловил ошибку? Думаю многим это интересно после тайпскрипт 4.4
@adammilner4512
@adammilner4512 Год назад
а как типизировать функцию, которая находиться в другом файле и я ее импортирую и передаю в asyncThunk? Кидает эрроры относительно параметров асинхронной функции, не могу передать rejectWithValue нормально
@TheS68123
@TheS68123 3 месяца назад
Теперь вместо AnyAction . UnknownAction
@rebelliondreamer6261
@rebelliondreamer6261 2 года назад
Михаил, планируете ли выпустить курс по Next.js? Спасибо ролик кстати)
@mishanep
@mishanep 2 года назад
Возможно со временем. В ближайшей перспективе курс по TypeScript. После него возможны варианты. Но пока я не знаю когда смогу приступить к записи следующего курса.
@rebelliondreamer6261
@rebelliondreamer6261 2 года назад
@@mishanep спасибо)
@Elator11777
@Elator11777 2 года назад
@@mishanep typescript очень жду.
@phd-oldremain
@phd-oldremain 2 года назад
@@mishanep Огонь, ждём TS)
@RcToysUa
@RcToysUa 2 года назад
Привет! Как сделать отправку формы из React в телеграм?
@user-by1nq8zf6k
@user-by1nq8zf6k 4 месяца назад
Не понимаю почему все объясняют на примере fetch он же такой сложный по сравнению с axios
@LoudSven
@LoudSven Год назад
Подскажите, в axios нет response.ok. Как там быть с rejectWithValue?
@mishanep
@mishanep Год назад
Хороший вопрос. Давно не работал с axios. Он по идее должен выбрасывать ошибку сам, нет?
@unknown.6914
@unknown.6914 7 месяцев назад
'AnyAction' is deprecated - хммм, а какие альтернативы
@mishanep
@mishanep 7 месяцев назад
В официальной доке есть информация по миграции на версию 2.0. Там должно быть упоминание этого изменения и рекомендации что использовать.
@user-vq4cv3xf9z
@user-vq4cv3xf9z 2 года назад
михаил у вас есть платные консультации ? если да, то как с вами связаться
@mishanep
@mishanep 2 года назад
Здравствуйте, Дмитрий. Напишите запрос на почту pcgramoga@gmail.com с уточнением темы консультации.
@user-vq4cv3xf9z
@user-vq4cv3xf9z 2 года назад
@@mishanep не правильная Почта пишет
@mishanep
@mishanep 2 года назад
Perdón, опечатка. pcgramota@gmail.com Если что, во вкладке о сообществе всегда можно найти
@user-fn2ud8ec3i
@user-fn2ud8ec3i Год назад
у меня toggle не работал для вновь добавленного элемента (201) в запросе на сервер после if добавил const newTodo = { ...todo, completed: !todo.completed } и этот newTodo поместил в body и все нормально. а так в action.payload попадал только completed: true.
@singlebw265
@singlebw265 Год назад
Михаил здраствуйте. Как можно динамически получить значение одного ключа в PayloadAction и использовать его значение для отображения данных во 2м ключе. Всю голову сломал, если не сложно подскажите. const initialState:StateManagementProps = { section: { patientRecord: { lists: { listPatients: [], listRecords: [], listDepartaments: [], listService: [], listDoctors: [], listDateTimesByGroupDoctors: [], listDateTimeByDoctor: [], }, }, viewingTheSchedule: { lists: { listAllMO: [], listDepartaments: [], listService: [], listDoctors: [], listAllDateTimesByGroupDoctors: [], }, }, recordInCurrentDay: { lists: { listRecordOperator: [], }, }; В UI хотелось бы использовать так dispatch(managementActions.setList( {keySection: 'recordInCurrentDay', keyList: 'тут не показывает листы на основе ввода keySection ', listData: [] } )); Такое можно организовать если передавать не объектом а аргументами. Я так получаю листы export type ReturnGetList< KeySection extends KeySections_OR, KeyList extends ListBySection_OR > = StateManagementProps['section'][KeySection]['lists'][KeyList]; export function getList( {management}:RootState, keySection: KeySection, keyList: KeyList){ return (management.section[keySection] as any).lists[keyList] as ReturnGetList; } Наброски типов export type KeySections_OR = keyof StateManagementProps['section']; export type ListBySection_OR = keyof StateManagementProps['section'][KeySection]['lists']; export type ListsSections_P = {[K in KeySections_OR]: keyof StateManagementProps['section'][K]['lists']} export type ConcatValuesByObjectTypes = T extends infer R ? R[keyof R] : never; export type GetValueKeySection = Section extends infer U ? U extends {keySection: string} ? U['keySection'] : null : null; export type allKeyList = ConcatValuesByObjectTypes
@user-cg1pq2kh6t
@user-cg1pq2kh6t 5 месяцев назад
как типизировать подобное?) state.currency[action.payload?.base]
@apache_116
@apache_116 Год назад
Если при нажатии кнопки добавить todo у вас не рендерится новая todo добавьте в addNewTodo response.clone().json()
Далее
Типизация для Redux Toolkit
22:24
Просмотров 41 тыс.
Redux - Complete Tutorial (with Redux Toolkit)
37:01
Просмотров 191 тыс.