在VueRouter中使用route.query时,得到的类型是LocationQuery
export declare type LocationQuery = Record<string, LocationQueryValue | LocationQueryValue[]>;
而query中的参数类型为
(string|null) | (string|null)[]
而正常情况下我们默认query中的参数都是string类型。
其实如果你的链接上有多个同名query,route.query会返回一个数组
// www.anyurl.com?name=123&name=456
console.log(route.query) // ['123', '456']
但是绝大多数情况下我们不会这样玩。
使用的时候我们认为query的值都是string,所以全部as一下是可以的。
const aa = route.query.status as string
更方便的办法是在.d.ts文件中扩展route.query的类型
如下:
import 'vue-router'
declear module 'vue-router' {
interface RouteLocationNormalizedLoaded {
query: Record<string, string>