<div dir="ltr">Yes the real value of strict types, in my view, is at development time, not at run time.<div><br></div><div>However I would be curious to know if anybody has a usage for them at run time, and an example of such a case...</div><div><br></div><div>Otherwise, yes a "toolchain" that allows strict typing using JavaScript without having to "use TypeScript".</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, 25 Mar 2019 at 04:58, Ranando King <<a href="mailto:kingmph@gmail.com">kingmph@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">One thing is definitively true. Any static type system added to ES must not be mandatory. Untyped code must be able to call typed code without forcing references into a fixed type. Likewise, typed code must be able to call untyped code without forcing references to give up type guarantees.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Mar 24, 2019 at 8:48 PM kai zhu <<a href="mailto:kaizhu256@gmail.com" target="_blank">kaizhu256@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">i share a similar concern that static-typing makes little sense in high-churn-rate UX-workflow-programming.<br>
<br>
it encourage people to bikeshed for correctness, on low-level code that frequently gets rewritten every few weeks/months -- and with often demoralizing effects.<br>
<br>
> On 24 Mar 2019, at 17:26, Bergi <<a href="mailto:a.d.bergi@web.de" target="_blank">a.d.bergi@web.de</a>> wrote:<br>
> <br>
> Hello,<br>
> to play the devils advocate: why does JavaScript need static typing?<br>
> <br>
> Your proposal doesn't really answer that. Sure, it mentions tooling and<br>
> IDEs that can provide you with type hints and complain on mistakes, but<br>
> things like Flow and Typescript do this today already.<br>
> What's your goal, to have JS engines run Typescript(-like) code natively<br>
> without transpiling? For backwards-compatibility you'd have to do that<br>
> anyway, especially if new type system features are introduced incrementally.<br>
> <br>
> What's the point of building this feature into engines? It just provides<br>
> additional complexity. Not to mention the difficulty of finding a<br>
> suitable type system that is both sophisticated enough to describe all<br>
> useful code (not taking away too much flexibility) and simple enough to<br>
> understand without a CS degree. And which interfaces well with un-typed<br>
> completely dynamic code.<br>
> <br>
> What does "static typing" even mean to you in a dynamic scripting<br>
> language? JavaScript is not compiled by the developer, it is run by the<br>
> user. Where (when) do you expect types to be checked? Should the engine<br>
> throw early errors (during parsing)? During parsing of which parts of<br>
> the code, even when "normal" (untyped) code is calling into typed code?<br>
> Or do you expect dynamic runtime errors, like when assigning an invalid<br>
> value to a "typed variable" or calling a "typed function" with wrong<br>
> arguments? Are type definitions completely constant or could they be<br>
> mutated/extended/etc dynamically (and what happens when you introduce<br>
> new types with `eval` or by loading another script)?<br>
> <br>
> A proposal would need to provide an objective that answers all these<br>
> questions, before even considering any particular type system or syntax.<br>
> <br>
> One way to go forward that I can see would be a proposal that reserves a<br>
> relatively unrestricted syntax for type annotations (which are already<br>
> considered during every grammar amendment anyway, for compatibility with<br>
> Flow/Typescript), but not assign any semantics to them and require<br>
> engines to simply ignore them. External tooling could then use these<br>
> annotations according to its own rules.<br>
> <br>
> kind regards,<br>
> Bergi<br>
> _______________________________________________<br>
> es-discuss mailing list<br>
> <a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
> <a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br>
_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
</blockquote></div>
_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
</blockquote></div>