Привет, я пытаюсь построить неизменный стек, используя TS, и у меня возникают проблемы
В моей функции pu sh я пытаюсь создать новый узел с текущей головкой, установленной в затем и передаем это в конструктор Stack, но каждый раз, когда я это делаю, он говорит, что head имеет значение null.
Я все остальные мои функции, head
правильно, но не в моей функции pu sh.
type Node<T> = { value: T; next: Node<T> | null };
export default class Stack<T> {
constructor(head: Node<T> | null = null) {
let size = 0;
let nextNode = head;
while (nextNode) {
size++;
nextNode = nextNode.next;
}
Object.defineProperty(this, 'peak', {
get: () => (head ? head.value : undefined),
});
Object.defineProperty(this, 'size', { get: () => size });
this.push = (value: T) => {
return new Stack({ value, next: head });
};
this.pop = () => new Stack(head ? head.next : null);
this[Symbol.iterator] = function* () {
let nextNode = head;
while (nextNode) {
yield nextNode.value;
nextNode = nextNode.next;
}
};
}
push: (value: T) => Stack<T>;
pop: () => Stack<T>;
get peak() {
return void 0;
}
get size() {
return void 0;
}
[Symbol.iterator]: any;
}