function reverseList(head: ListNode): ListNode {
let previous: ListNode | null = null;
let current: ListNode | null = head;
while(current !== null) {
const nextNode: ListNode = current.next;
current.next = previous;
previous = current;
current = nextNode;
}
return previous;
}
这段代码中,previous
初始态为null
,current
初始态为ListNode
,必定会进入循环;
循环执行之后,current
最终态为null
,previous
最终态为ListNode
。即返回值必然是ListNode
类型
然而TypeScript会按照变量的类型声明进行检查,得出结论返回值应该为ListNode | null
,如果增加null
,那么需要对函数调用结果做不必要的类型检查。
求助应该如何修正这段TypeScript代码?
居然只能采纳一个答案,其实可以有两种思路。
首先
previous=null
针对的是空链表和单结点链表。如果反转函数支持空链表,参数
head
为ListNode | null
,那么整个逻辑最终返回ListNode | null
是合理的。完善这段代码的方式是更改函数参数类型。如果反转函数不支持空链表,那么就有了现在这个矛盾点,完善这段代码有两种方式:
head
,previous
的指向从head
开始