Re:Why don't more languages offer flow typing?
by xg15 on Monday April 04, 2022 @02:48PM
(#30910559)
For consts and function arguments yes, I think. But you could have some mutable variable or field whose value depends on runtime state. In that case, you could have an actual polymorphic type.
Re:Why don't more languages offer flow typing?
by epolanski on Monday April 04, 2022 @05:46PM
(#30912374)
But the previous example isn't that case.
if (c.type === 'a') { /* c is of type A here */ }
This is dynamic typing, this code is checked at runtime, and it's leveraged statically.
Re:Why don't more languages offer flow typing?
by xg15 on Monday April 04, 2022 @06:39PM
(#30912907)
Yes, that's correct. In the GP example, c was const, so the type can be determined at compile time.
Re:Why don't more languages offer flow typing?
by simulate-me on Monday April 04, 2022 @07:55PM
(#30913520)
I was writing TypeScript, where const just means the variable is not reassigned. For instance this is valid:
const c: C = Math.random() < 0.5 ? { type: 'a' } : { type: 'b' }.
I guess the exception would be if you have a non-homogenous array that you try to map over. In that case there's probably no way around boxing the values.