type JDict*[K, V] = ref object proc `[]`*[K, V](d: JDict[K, V], k: K): V {.importcpp: "#[#]".} proc `[]=`*[K, V](d: JDict[K, V], k: K, v: V) {.importcpp: "#[#] = #".} proc newJDict*[K, V](): JDict[K, V] {.importcpp: "{@}".} proc contains*[K, V](d: JDict[K, V], k: K): bool {.importcpp: "#.hasOwnProperty(#)".} proc del*[K, V](d: JDict[K, V], k: K) {.importcpp: "delete #[#]".}