push() 和 pop() 中返回值报错
来源:2-15 泛型第三部分 - 泛型在类和接口中的使用
慕莱坞3345942
2022-06-17
老师你好,今天实践课堂代码时出现问题
此处 item 报错,尝试显式声明 data 后不再报错,但 pop()中仍存在报错
不知道是哪里的问题呢?该怎么解决呢
写回答
2回答
-
同学你好
请问你的 ts 是什么版本的? 看起来是更新的更强推断的版本,我在本地没发复现.
猜测一下解决方法,因为 shift 方法确实有可能返回为 undefined(当数组为空的时候),所以后面直接调用 toFixed 是有可能报错的,需要更多的约束
// 把 pop 返回的类型去掉,让自动推论推断返回的类型:应该是 T 或者 undefined pop() { return this.data.shift() } // 这一行简单修改一下,修改为下面 console.log(queue.pop().toFixed()) // 先拿出值来,应该是 number | undefined 类型 const popedValue = queue.pop() if (popedValue) { // 有值的时候再调用对应的方法 console.log(popedValue.toFixed()) }
212022-06-21 -
tzone
2023-10-21
// 泛型在类和接口中的应用 class Queue<T> { private data: any[] = []; push(item: T){ return this.data.push(item) } pop(): T { return this.data.shift() } } const queue = new Queue<number>() queue.push(1)
上述代码可以
tsc -v : Version 5.2.2
node -v
v20.3.0
00
相似问题