if (this.navigation.state.params && this.navigation.state.params.name)

Вы пишете аналогичный код для проверки параметров навигации, чтобы избежать сбоя во время выполнения в собственном приложении реакции?
Хорошо. конечно, есть лучший способ проверить это во время компиляции. Ответ - TypeScript с использованием дженериков.

  1. Давайте напишем класс StandardNavigation.ts с некоторыми общими кодами

2. Файл Home.tsx: initialRoute

Здесь я определяю, что «имя» - это единственный параметр навигации, который я бы передал на экран с подробностями.

Ошибка компиляции:

Поскольку интерфейс HomeNavigationParams имеет только свойство name, он не разрешит (ошибка компиляции) любые другие параметры, если мы не объявим их в интерфейсе.

3. Файл Details.tsx

На экране «Подробности» доступны для получения только параметры HomeNavigationParams (this.props.navigation.state.params.name).
В старом коде javascript, если вы пропустили типы параметров, приложение вылетает беззвучно. Но с помощью машинописного текста мы действительно можем избежать этих сбоев / сбоев во время выполнения.

Ошибка компиляции:

Интерфейс HomeNavigationParams не имеет свойства «nmae».

Вывод: лучше исправить ошибки компиляции, чем сбои приложения.

Пример проекта: