+ /**
+ * Returns an backward iterator for the deque.
+ *
+ * @returns An backward iterator for the deque.
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols
+ */
+ backward (): Iterable<T> {
+ return {
+ [Symbol.iterator]: (): Iterator<T> => {
+ let node = this.tail
+ return {
+ next: () => {
+ if (node == null) {
+ return {
+ value: undefined,
+ done: true
+ }
+ }
+ const ret = {
+ value: node.data,
+ done: false
+ }
+ node = node.prev as Node<T>
+ return ret
+ }
+ }
+ }
+ }
+ }
+