我正试图为这个函数的TS版本添加类型,并且遇到了一点麻烦。
来自React导航文档:
// RootNavigation.js
import { createNavigationContainerRef } from '@react-navigation/native';
export const navigationRef = createNavigationContainerRef<RootStackParamList>()
export function navigate(name, params) {
if (navigationRef.isReady()) {
navigationRef.navigate(name, params);
}
}
// add other navigation functions that you need and export them
我正在使用Typescript,并希望添加类型的参数navigate(name, params)
,但我不能完全弄清楚他们应该是什么。任何想法吗?
我已经有了这样的容器类型:
export const navigationRef = createNavigationContainerRef<RootStackParamList>()
我像这样使用navigate
// RootNavigation.js
import {createNavigationContainerRef} from '@react-navigation/native';
import {RootStackParamList} from './RootStackParamList';
export const navigationRef = createNavigationContainerRef<RootStackParamList>();
export function navigate<RouteName extends keyof RootStackParamList>(
...args: RouteName extends unknown
? undefined extends RootStackParamList[RouteName]
?
| [screen: RouteName]
| [screen: RouteName, params: RootStackParamList[RouteName]]
: [screen: RouteName, params: RootStackParamList[RouteName]]
: never
) {
if (navigationRef.isReady()) {
navigationRef.navigate(...args);
}
}