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

来源:2-12 泛型(Generics) 第三部分 - 类和接口

袁门弟子

2020-06-18

http://img.mukewang.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

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

//img.mukewang.com/szimg/5eec275609a3a38a09280504.jpg

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

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

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

0
1
袁门弟子
并没有哇,母鸡点解 谢谢老师,我再研究下never的问题
2020-06-19
共1条回复

React18+TS高仿AntD从零到一打造组件库

设计,开发,测试,发布再到 CI/CD,从0到1造轮子

2123 学习 · 959 问题

查看课程