Карточка Middle Навигация обновлено

Типизация навигации

Вопрос

Как типизировать параметры экранов в React Navigation с TypeScript?

Попробуйте сами

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

Показать ответ и разбор

Коротко

Описать тип RootStackParamList = { Home: undefined; Item: { id: string } }, передать его в createNativeStackNavigator<RootStackParamList(), а в экранах использовать NativeStackScreenProps<RootStackParamList, 'Item'. Для глобального useNavigation объявить тип в ReactNavigation.RootParamList.

Ответ

Описать тип RootStackParamList = { Home: undefined; Item: { id: string } }, передать его в createNativeStackNavigator<RootStackParamList>(), а в экранах использовать NativeStackScreenProps<RootStackParamList, 'Item'>. Для глобального useNavigation объявить тип в ReactNavigation.RootParamList. Статический API выводит типы сам.

Разбор

Тогда navigate('Item') без id не скомпилируется.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.