请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师您好,关于泛型几个问题

https://img1.sycdn.imooc.com//szimg/5eeb5c6709682c7604820267.jpg


老师您好,我在上面圈了三个地方,是和您的代码不同的地方,您的data没有进行注解,不会报错,但我这里会报错,如果我不加注解,那么在push的地方报不能给never赋值T,

第二个地方如果不加undefined会在data.pop的地方报错

第三个圈不加可选,会报可能未定义,也就是未定义toString()


我能理解这几个地方的写法,data不加定义的话,那么就是never,我们如果push进number/string等应该是不行

pop的返回值要加undefined,是因为可能data是空数组,

而调用pop可能返回undefined,undefined当然没有toString方法,所以要加上可选标识符


老师我这样理解对吗?

还有就是为啥你的没有报错

我的ts版本是3.8.3

您的是3.6.3吧?视频中

请问会不会是版本问题呢?

我图中这种写法有问题吗?

正在回答

1回答

张轩 2020-06-19 10:55:53

同学你好 在我的编辑器中ts 版本 (3.8.3)并没有报错,原因就是它将 this.data 推论为了 any 的数组

https://img1.sycdn.imooc.com//szimg/5eec275609a3a38a09280504.jpg

所以没有出现你的那些问题。当然推论为 any,在这里是不完美的,有可能会出现你说的那些 bug,不过这里只是教学目的,所以没有特意修改。

你的理解是非常正确的,你这样修改,完美的解决了这几个问题,不错。

但是我还是不清楚为什么你的 data 为推论为 never 的数组,你的 ts 是否有特殊的配置之类呢?

0 回复 有任何疑惑可以回复我~
  • 提问者 袁门弟子 #1
    并没有哇,母鸡点解 谢谢老师,我再研究下never的问题
    回复 有任何疑惑可以回复我~ 2020-06-19 11:36:24
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信