关于类型提示问题

来源:9-9 作业 完成文章详情页

weixin_慕神3292065

2020-10-28

图片描述
这里的代码提示感觉有问题,代码是跟老师差不多的,这个url还是fitUrl都会提示 string | AvatarType问题
图片描述
而且我已经使用断言了,表明image不是string,为什么还是会提示出错呐?
图片描述
然后这边也是指向AvatarType类型了
然后我的store也有相关的处理了:
图片描述
困惑了很久,希望老师能帮我解答!

写回答

1回答

张轩

2020-10-29

同学你好~ 非常认真的问题 注意你断言使用的方式 只是把 item.image 断然为合适的类型传入到了 一个函数中,但是最终其实并没有改变 item.image 的类型,也就是说在外面 你的 item.image 还是 string | AvatarType 类型的

在这里你可以多加一个表达式来缩小类型返回,把 string 排除出去,这就是 type guard 的作用

<div v-if="post.image && typeof post.image !== 'string'">

这样就没错了,现在 item.image 应该是 AvatarType 类型啦。

我发现我的源代码也有错误,谢谢你找到这个问题,我会在后面修复

0
1
weixin_慕神3292065
谢谢老师讲解,我想过要用类型保护typeof来限制单位,但是只写在script中,没有写在模板里。?
2020-10-29
共1条回复

Vue3 + TS 仿知乎专栏企业级项目

带你完成前后端分离复杂项目,率先掌握 vue3 造轮子技能

3142 学习 · 2313 问题

查看课程