Vue3项目中使用TypeScript一些报错问题
Vue3项目中,使用TypeScript遇到的问题及解决方案。
- Vue3的template中使用v-for,提示错误:对象的类型为 “unknown”。ts(2571)
解决方案:
给循环中item定义类型;
1 | <template> |
- 在定义接口时,入参如果不定义类型会报:
1
2
3(parameter) params: any
参数“params”隐式具有“any”类型。ts(7006)
解决办法就是给入参定义接口类型:
1 | interface generalViewIn { |
这样params入参就不会标红了。
- 对象使用变量索引时,会标红,报:
1 | 元素隐式具有 "any" 类型,因为类型为 "string" 的表达式不能用于索引类型 "{}"。\在类型 "{}" 上找不到具有类型为 "string" 的参数的索引签名。ts(7053) |
解决办法:
最简单是方案是修改tsconfig.json配置:在”compilerOptions”下加入下面这句,就不报错了。还有其他方案:
1 | { |
- 给reactive的变量赋值,会报:
1
2不能将类型“{ path: any; meta: any; }[]”分配给类型“never[]”。\
不能将类型“{ path: any; meta: any; }”分配给类型“never”。ts(2322)
解决办法:
在声明变量出就定义类型:
- 在遍历中,item会报错:
解决办法: 给item定义类型
1 | const subChildren = children.filter((item:any) => !item.meta?.hidden); |
- 从路由中获取参数,然后传递给接口传给接口的入参使用从路由中获取的参数时会报错:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16// 变量声明
const { regionName="", regionId='', status="" } = route.query
//接口声明
interface getHostListIn {
regionId: string,
}
//接口使用
const getOptionList = () => {
getHostList({regionId}).then((res) => {
...
}).catch((err) => {
...
})
}1
2不能将类型“string | LocationQueryValue[]”分配给类型“string”。\
不能将类型“LocationQueryValue[]”分配给类型“string”。ts(2322)
解决办法:
修改接口入参声明类型:
1 | //变量声明 |
-------------本文结束&感谢您的阅读-------------
相关文章