export interface IPool { use?(): any; free?(): any; } export class Pool { private _fn: () => T; private _idx: number; private _frees: T[]; public get freeCount() { return this._frees.length; } constructor(fn: () => T, size: number) { this._fn = fn; this._idx = size - 1; this._frees = new Array(size); for(let i=0; i void) { for(let i=0; i