No. In languages like F#, you can encode in the type system that the result can be either a customer or an error. And the compiler won't let you "access" the customer until you've safely checked that the result is, indeed, the customer rather than an error.
In this way you end up encoding more intent within your types and behaviours rather than implicitly letting the consumer figure it out themselves.
Disclaimer: I'm one of the maintainers of the SAFE stack.
The SAFE Stack is slightly different in that in itself it's not a technology as such, aside from the .NET template that we a lot of invest time into. Instead, it brings together several distinct technologies that when pieced together form an excellent end-to-end stack.
I would say that SAFE seems to currently have a larger community movement around it (as well as a commercial support aspect for those people that want / need that).
SAFE Stack doesn't support WASM though - the client side story is instead built on top of the excellent Fable (an F#-to-Babel-to-Javascript transpiler). In this regard I think SAFE is also slightly different to WebSharper in that (from when I last tried WS out at least) WS is more of a complete framework whereas SAFE contains a number of libraries and components that you can opt in / out of as you see fit and lives a bit closer on the JS ecosystem side (again, happy to be corrected here on the WS side).
Both Websharper and SAFE stack are excellent stacks, and both encourage the use of F# end-to-end - try them both out and see what fits better for you :)
Typescript has grown into way more than just "JavaScript with some type annotations". It's a much bigger superset with lots of language features that JS doesn't have.