if (this.navigation.state.params && this.navigation.state.params.name)
Вы пишете аналогичный код для проверки параметров навигации, чтобы избежать сбоя во время выполнения в собственном приложении реакции?
Хорошо. конечно, есть лучший способ проверить это во время компиляции. Ответ - TypeScript с использованием дженериков.
- Давайте напишем класс StandardNavigation.ts с некоторыми общими кодами
2. Файл Home.tsx: initialRoute
Здесь я определяю, что «имя» - это единственный параметр навигации, который я бы передал на экран с подробностями.
Ошибка компиляции:
Поскольку интерфейс HomeNavigationParams имеет только свойство name, он не разрешит (ошибка компиляции) любые другие параметры, если мы не объявим их в интерфейсе.
3. Файл Details.tsx
На экране «Подробности» доступны для получения только параметры HomeNavigationParams (this.props.navigation.state.params.name).
В старом коде javascript, если вы пропустили типы параметров, приложение вылетает беззвучно. Но с помощью машинописного текста мы действительно можем избежать этих сбоев / сбоев во время выполнения.
Ошибка компиляции:
Интерфейс HomeNavigationParams не имеет свойства «nmae».
Вывод: лучше исправить ошибки компиляции, чем сбои приложения.
Пример проекта: