<div>Been awhile as this is old library code, but I recall the below code once worked for me.  Currently failing at the moment, though may have broken at any time of the last few months.</div><div><br></div><div>#lang typed/racket/base</div>
<div><br></div><div>(define js-null &#39;JsNull)</div><div><br></div><div>(define-type JsNull &#39;JsNull)</div><div>(define-predicate JsNull? JsNull)</div><div><br></div><div>(define-type Json (Rec Json (U String Boolean JsNull Number (Listof Json) (HashTable Symbol Json))))</div>
<div><br></div><div>(define-type JsObject (HashTable Symbol Json))</div><div>(define-predicate JsObject? JsObject)</div>