老师您好,关于泛型几个问题
来源:2-12 泛型(Generics) 第三部分 - 类和接口

袁门弟子
2020-06-18
老师您好,我在上面圈了三个地方,是和您的代码不同的地方,您的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回答
-
同学你好 在我的编辑器中ts 版本 (3.8.3)并没有报错,原因就是它将 this.data 推论为了 any 的数组
所以没有出现你的那些问题。当然推论为 any,在这里是不完美的,有可能会出现你说的那些 bug,不过这里只是教学目的,所以没有特意修改。
你的理解是非常正确的,你这样修改,完美的解决了这几个问题,不错。
但是我还是不清楚为什么你的 data 为推论为 never 的数组,你的 ts 是否有特殊的配置之类呢?
012020-06-19
相似问题