Untitled
unknown
typescript
2 years ago
1.6 kB
4
Indexable
// типизация, которую я пишу type PageNames = 'MainPage' | 'CheckoutPage' | 'ProfilePage' | 'CartPage' // список идентификаторов страниц type PagaNamesMap<T> = Partial<Record<PageNames, T>> // ниже кусок из какого-то контроллера, который работает на всех страницах type AnalyticScreenName = 'checkout' | 'cart_main' // названия страниц, используемые в аналитике, импортируется откуда-то снаружи // на некоторых страницах надо отправить аналитику, в аналитике свои имена страниц, у нас свои. Мы не можем сделать одинаковые по историческим причинам const analiticsMapping: PagaNamesMap<AnalyticScreenName> = { // вот тут без Partial ругается, что не все ключи добавлены в объект CheckoutPage: 'checkout', CartPage: 'cart_main' } let currentPage: PageNames = Math.random() > 0.5 ? 'MainPage' : 'CartPage' // идентификатор текущей страницы, берется if(analiticsMapping[currentPage]) { const res: {analyticPage: AnalyticScreenName} = { analyticPage: analiticsMapping[currentPage] // вот тут из-за использования Partial possibly undefined } // отправляется какая-то аналитика с res в нагрузке }
Editor is loading...
Leave a Comment