import { Map } from "./map"; var nextId: usize = 1; var stringToId: Map; var idToString: Map; export class Symbol { static for(key: string): Symbol { if (!stringToId) { stringToId = new Map(); idToString = new Map(); } else if (stringToId.has(key)) return changetype(stringToId.get(key)); var id = nextId++; stringToId.set(key, id); idToString.set(id, key); return changetype(id); } static keyFor(sym: Symbol): string | null { return idToString !== null && idToString.has(changetype(sym)) ? idToString.get(changetype(sym)) : null; } constructor(description: string | null = null) { return changetype(nextId++); } }