You can throw anything in JS, but it's a bad practice. I'd like to have it fail rather than silently accept anything. Though, it's not a good default, so should be opt-in.
Actually, there's 3 possible behaviors:
- Always return an
object. (wanted default)
- Passthrough non-object values. (current default)
- Throw on non-object input.
I'd like 1 to be the default behavior, for consistency, but add an option to be able to opt into 2 (which is the current behavior) or 3 (which would be the strict behavior). This should be a single option.
Another benefit of 1 is that the TypeScript types can be better. We can guarantee it's an object and we can also guarantee that the name, message, and stack properties exist.
You can throw anything in JS, but it's a bad practice. I'd like to have it fail rather than silently accept anything. Though, it's not a good default, so should be opt-in.
Actually, there's 3 possible behaviors:
object. (wanted default)I'd like
1to be the default behavior, for consistency, but add an option to be able to opt into2(which is the current behavior) or3(which would be the strict behavior). This should be a single option.Another benefit of
1is that the TypeScript types can be better. We can guarantee it's an object and we can also guarantee that thename,message, andstackproperties exist.