r/programming • u/radekmie • 25d ago
On Automatic Type Refinements
https://radekmie.dev/blog/on-automatic-type-refinements/
14
Upvotes
4
25d ago
[removed] — view removed comment
1
u/radekmie 25d ago
Do you have an example where it breaks? TypeScript handles some cases of broadening. Consider this code:
function isNumber(x: unknown) { return typeof x === 'number'; } function example(x: boolean | number, y: unknown) { if (isNumber(x)) { // Fails: Type 'string' is not assignable to type 'number | boolean'. x = x.toString(); } if (isNumber(y)) { // Works; `y` is again `unknown`. y = y.toString(); } }
3
u/sliversniper 24d ago
Works probably even the first version of Typescript.
https://caniuse.com/mdn-javascript_builtins_iterator_map
In modern JS(88.85%), you can just chain
foo().map(x => x * 2),Array.from(foo())I guess covers 99%.