You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Navigation v6+TypeScript:导航函数参数类型指定问题

React Navigation v6 + TypeScript:导航辅助函数的类型定义

直接给navigate函数添加泛型约束,就能让routeName和routeParams关联对应路由的类型,实现严格的参数检查:

import { NavigationContainerRef } from '@react-navigation/native';
import React from 'react';

// 你的StackNavigator类型定义
export type StackNavigator = {
  Welcome: undefined;
  Username: undefined;
  Password: undefined;
  ForgotPassword: {id: number};
};

// 先给navigationRef指定正确类型
export const navigationRef = React.createRef<NavigationContainerRef<StackNavigator>>();

// 带类型检查的navigate辅助函数
export function navigate<T extends keyof StackNavigator>(
  routeName: T,
  routeParams?: StackNavigator[T]
) {
  navigationRef.current?.navigate(routeName, routeParams);
}

类型说明:

  • 泛型T约束routeName必须是StackNavigator的键(也就是Welcome/Username/Password/ForgotPassword中的一个)
  • routeParams的类型自动关联当前routeName对应的参数要求:
    • 传Welcome/Username/Password时,routeParams只能是undefined(可直接省略)
    • 传ForgotPassword时,routeParams必须是{id: number}类型

调用时TypeScript会自动校验参数合法性,比如:

  • 合法调用:navigate('ForgotPassword', {id: 123})
  • 非法调用(触发TS报错):navigate('ForgotPassword') 或 navigate('Welcome', {id: 456})

内容的提问来源于stack exchange,提问作者kashif-sk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 08:40:48