比如服务器给前端的 json 里面返回了一个 data 结构 json={ data:{ name:hikaru } }
前端定义的 data 结构 type Data={ name:string } const d:Data = json.data 这个时候 d.提示没法出 name ,必须右侧加上 as Data 才会有提示
1
jazzg62 2023-05-13 17:12:30 +08:00
不应该,重启下 vscode 试试呢
|
2
looking0truth 2023-05-13 18:04:04 +08:00
你是不是讲反掉了,json 的 type 你给了吗
|
3
CLMan 2023-05-13 18:07:45 +08:00
你服务器返回的是运行时数据,是`any`类型的,你不用`as`转换,你还能干嘛?
服务器返回的数据不是你自己创建的数据,编译器是没法检查的。 |
4
crysislinux 2023-05-13 18:20:44 +08:00 via Android
可能你的 tsconfig. json 里的配置认为你这个转换是非法的。你保持左边不变右边 as any 应该也可以
|
5
Danswerme 2023-05-13 18:56:19 +08:00
你说的这种一般是要用泛型来实现的,类似这种:
``` const res = await http.get<HomeType>("/home"); ``` 看这个帖子: https://juejin.cn/post/7113475007598034951#heading-9 |
6
Leviathann 2023-05-13 19:19:29 +08:00
不是少了一层 data ?
|
7
agdhole 2023-05-13 19:36:23 +08:00
用 webstorm
|
8
lisongeee 2023-05-13 19:41:42 +08:00
![image]( https://github.com/lisonge/vite-plugin-monkey/assets/38517192/1cd0bc31-5c72-4a92-acf1-eb551494652c)
我这边是可以的,你的 json.data 的 type 是什么呢 |
9
CLMan 2023-05-13 20:08:42 +08:00
@CLMan 是我记错了,anxios 是泛型 API ,默认是 any ,而 any 是不需要`as`转换的,只有`unknown`才需要。
|
10
DOLLOR 2023-05-13 20:28:21 +08:00
我试了是正常的。
建议提供完整的可复现示例。 |