TS 的错误信息其实写的挺明白的,为啥不照着改呢……
VueRouter 的 query
声明是这样的:
query: { [key: string]: string |?(string | null)[] }
这是一个字典结构,每一项可能是 string
也可能是个 string?
的数组。
而 parseInt
的声明是这样的:
function parseInt(s: string, radix?: number): number;
要求必须传入一个 string
,可你上面取出来的值 TS 并不能保证是个 string
,所以就报错了。
如果你确定你传入的就是 string
,那你类型断言一下就好了:
const index = parseInt(route.query.index as string);
// 或者
const index = parseInt(<string>route.query.index);
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…