版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《通信软件前端开发》vue3路由TypeScript配置与类型提示基础类型体系import{createRouter,createWebHistory,RouteRecordRaw,//路由记录类型
RouteLocationNormalized,//标准化路由位置
NavigationGuard//导航守卫类型}from'vue-router'//通信设备报警系统import{createRouter,createWebHistory}from'vue-router'importtype{RouteRecordRaw}from'vue-router'核心类型导入
类型推导的优势字段自动补全必填项校验(如component不能遗漏)路径参数的类型约束(动态段:必须对应命名参数)路由元信息的类型扩展constroutes:RouteRecordRaw[]=[{path:'/',redirect:'/devices'},{path:'/devices',name:'Devices',component:()=>import('../views/DeviceList.vue'),meta:{title:'设备列表'}......meta字段的类型问题
//在项目任意类型声明文件中(如src/typings/router.d.ts)import'vue-router'declaremodule'vue-router'{interfaceRouteMeta{title?:string//页面标题
requiresAuth?:boolean//是否需要登录
permissions?:string[]//所需权限列表
transition?:string//过渡动画名称
keepAlive?:boolean//是否缓存
}}
路由参数的类型困境typeRouteParams=Record<string,string|string[]>//类型收窄的常用模式//模式1:类型守卫constid=Array.isArray(params.id)?params.id[0]:params.id//模式2:类型断言constid=params.idasstring//模式3:自定义组合式函数functionuseRouteParams(){constroute=useRoute()returncomputed(()=>({id:Array.isArray(route.params.id)?route.params.id[0]:route.params.id}))}useRoute()的返回值类型
编程式导航的类型问题router.push的参数类型字符串路径:/user/123路径对象:{path:'/user/123'}命名路由:{name:'User',params:{id:'123'}}类型安全缺失的原因RouteLocationRaw的类型定义是宽松的,因为路由表是在运行时动态注册的,TypeScript编译器无法静态分析某个name是否存在,也无法确定该路由需要哪些params。解决方案思路查询参数优先常量维护封装工具函数//示例:枚举路由名称enumRouteNames{Home='Home',User='User'}//封装专用函数functiongoToUser(id:string){router.push({name:RouteNames.User,params:{id}})}
路由守卫的类型支持①boolean:true放行,false中断②RouteLocationRaw:重定向到其他路由③void/undefined:默认放行类型为NavigationReturn?类型守卫应用场景示例:router.beforeEach((to,from)=>{//得益于之前的类型扩展,to.meta.requiresAuth是boolean|undefinedif(to.meta.requiresAuth&&!isLoggedIn()){//返回值类型自动推导为重定向对象
return{name:'Login',query:{redirect:to.fullPath}}}})导航守卫的返回类型
守卫参数的类型(RouteLocationNormalized)课堂总结基础类型RouteRecordRaw是路由表的核心约束类型;01参数类型route.params是string|string[],需要类型收窄;03元信息扩展通过模块扩充为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年饭店中秋节活动方案策划书
- 司机驾驶员用工合同新
- 四级劳动关系协调员理论与技能题库+参考答案
- 苏教版二年级语文下册教案
- 2026妇幼检验科面试题及答案
- 数字普惠金融、新质生产力与城乡融合发展
- 苏教版科学小学五年级上册期末测试卷(夺冠系列)
- 数控车项目教学
- 水乐园运营游乐设备设施维护保养与修理
- 苏教版科学小学五年级上册 期末测试卷3 (二)
- 2025年食品安全事故应急处置全流程培训
- 2026年安全员上半年工作总结
- 47. 系统集成项目管理规范
- 2026年淡水养殖高级水产工程师答辩题库
- 厂房外墙保温施工方案
- 2026-2032年中国桥接(Bridge)控制器芯片行业市场全景评估及发展战略研判报告
- 血气分析在重症监护中的应用
- 探秘南海IODP349基底玄武岩中钙质碳酸盐岩脉:岩石学与地球化学的深度剖析
- 2025山东菏泽郓城县人民医院招聘合同制护理人员60人笔试历年典型考题及考点剖析附带答案详解试卷2套
- 上市公司收购方案
- 货车更换闸瓦课件
评论
0/150
提交评论