3 ms·
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
by iainmerrick 3y ago
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?
- striking 3y agoYou can pass an arbitrary rehydration function, which can return non-JSON-representable types
- Dylan16807 3y agoIt could look at the return type of your reviver function, or at least whether you passed one in.
- kristiandupont 3y agoThere's a big discussion about this: https://github.com/microsoft/TypeScript/issues/1897 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?
- iainmerrick 3y agoThe 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.
- rcfox 3y agoWhat are the common operations you can perform on that union?
- consilient 3y agoYou can narrow it exhaustively.
- madeofpalk 3y agoThat'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.