A JSON value is best represented as a union type: boolean|string|number|array|dict.
Union types are the natural way to represent the parameters of functions that do typeof and instanceof checks, since you can easily write a list of the types that the function actually checks for.
TypeScript also has structural interface types, which are the natural way to represent the parameters of functions that don't use type guards (duck typing).