Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
541 views
in Technique[技术] by (71.8m points)

vue 使用 ts 给 $route.queryd 的属性添加类型

刚接触 TS 不久想用 vue+ts 加深理解

请求接口:

function getGoods(index: number) {}

我想限制传入的 index 的类型。

在调用的时候

const route = useRoute()
const index = parseInt(route.query.index)
getGoods(index)

发现 parseInt() 是报错的, 类型不符合

我要怎么给 query 里面的 index 添加类型注解呢?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...