declare module 'vue-router' 無此部分也無報錯

来源:10-5 架构项目路由系统及对应页面

weixin_慕运维6327115

2023-01-24

老師請問為何要寫
declare module ‘vue-router’ {
interface RouteMeta {
menu?: boolean,
title?: string,
icon?: string,
auth?: boolean
}
}
因為沒寫這部分好像也不會報錯

写回答

1回答

西门老舅

2023-01-26

你好,首先我们可以先看一下内置的meta的类型:

meta?: RouteMeta;

export declare interface RouteMeta extends Record<string | number | symbol, unknown> {}

最终解析完,meta的类型如下:

type RouterMeta = {

    [x: string]: unknown;

    [x: number]: unknown;

    [x: symbol]: unknown;

}

也就是说, meta默认是一个索引签名,任何属性都可以作为选项存在。那么意味着就没有约束性了,所以可以扩展RouterMeta来约束具体的属性的类型。

所以你可以尝试把title换成数字类型,就可以看到添加与不添加之间的区别了。




0
0

Vue3 + React18 + TS4入门到实战 系统学习3大热门技术

专为初级前端人员设计,系统性学习三大技术

261 学习 · 182 问题

查看课程