Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

It would be a lot nicer if it instead returned some JsonType that’s a union of all the possible JSON values. Anyone know if there’s a good reason why it doesn’t do that?


You can pass an arbitrary rehydration function, which can return non-JSON-representable types


It could look at the return type of your reviver function, or at least whether you passed one in.


There's a big discussion about this: https://github.com/microsoft/TypeScript/issues/1897. The benefit seems extremely limited to me. Valid JSON is obviously a subset of `any`, but I can't think of a situation where that particular specificity provides any value. Can you?


The value is when you’re parsing the JSON afterwards. It’s good to know you can match it exhaustively -- each value is either a Record<string, Json>, Json[], string, number, Boolean or null, and nothing else.

Edit to add: I think “any” is almost always a big cop-out because you couldn’t be bothered figuring out the correct type, and it often causes problems (loss of type coverage) further down the line. I admit I do use “any” in my own code when I really need to, but a library should work harder to avoid it, and the standard platform typings should work harder still.


That's effectively what unknown would be - at least the outcome would mostly be the same. You'll end up narrowing values in just the same way.


What are the common operations you can perform on that union?


You can narrow it exhaustively.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: