3 ms·
Probably... but in any case TypeScript also supports naked (edit: I just made up the name) unions, where you don't need to declare them upfront, and where value
by tomp 7y ago
Probably... but in any case TypeScript also supports naked (edit: I just made up the name) unions, where you don't need to declare them upfront, and where values of different types can be included directly. Such as:
let a = random() ? 'a' : 1
TypeScript infers type
string | number
- marton78 7y agoThis is still a discriminated union, only that the discriminator is provided by Javascript and is thus hidden: it's `typeof`.
- tomp 7y agoYeah, that's the runtime perspective... but for the type system, they're different... with the "naked" union being much harder (as they're non-algebraic - `a | b | b` always equals `a | b` and might even equal just `a` for some values of `a` and `b`)
- spion 7y agoNo, this works on any overlapping types too - even unsound combinations such as `T | Array<T>`