57 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| declare class Queue<ValueType> implements Iterable<ValueType> {
 | |
| 	/**
 | |
| 	The size of the queue.
 | |
| 	*/
 | |
| 	readonly size: number;
 | |
| 
 | |
| 	/**
 | |
| 	Tiny queue data structure.
 | |
| 
 | |
| 	The instance is an [`Iterable`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols), which means you can iterate over the queue front to back with a “for…of” loop, or use spreading to convert the queue to an array. Don't do this unless you really need to though, since it's slow.
 | |
| 
 | |
| 	@example
 | |
| 	```
 | |
| 	import Queue = require('yocto-queue');
 | |
| 
 | |
| 	const queue = new Queue();
 | |
| 
 | |
| 	queue.enqueue('🦄');
 | |
| 	queue.enqueue('🌈');
 | |
| 
 | |
| 	console.log(queue.size);
 | |
| 	//=> 2
 | |
| 
 | |
| 	console.log(...queue);
 | |
| 	//=> '🦄 🌈'
 | |
| 
 | |
| 	console.log(queue.dequeue());
 | |
| 	//=> '🦄'
 | |
| 
 | |
| 	console.log(queue.dequeue());
 | |
| 	//=> '🌈'
 | |
| 	```
 | |
| 	*/
 | |
| 	constructor();
 | |
| 
 | |
| 	[Symbol.iterator](): IterableIterator<ValueType>;
 | |
| 
 | |
| 	/**
 | |
| 	Add a value to the queue.
 | |
| 	*/
 | |
| 	enqueue(value: ValueType): void;
 | |
| 
 | |
| 	/**
 | |
| 	Remove the next value in the queue.
 | |
| 
 | |
| 	@returns The removed value or `undefined` if the queue is empty.
 | |
| 	*/
 | |
| 	dequeue(): ValueType | undefined;
 | |
| 
 | |
| 	/**
 | |
| 	Clear the queue.
 | |
| 	*/
 | |
| 	clear(): void;
 | |
| }
 | |
| 
 | |
| export = Queue;
 |