> if the runtime can assume that no type coercion needs to occur, it can skip that step all together,
Ok, I get it now. This example is still really weak. You save at most a few nanoseconds. To me the extra typing wouldn't be worth it. I have to admit I'm really biased. Not having to type vars is one of the best things to happen to me in the past decade. I run into a problem that type-checking could find about once a month at the most. However, I know there are many that will appreciate the typing and I wish you the best of luck. On Mon, Oct 1, 2012 at 3:28 PM, Rick Waldron <waldron.r...@gmail.com> wrote: > > > On Mon, Oct 1, 2012 at 6:18 PM, Mark Hahn <m...@hahnca.com> wrote: > >> > This will allow the runtime to then perform explicit string >> optimizations (whatever those might be). >> >> But there aren't any optimizations that can be made. All I'm asking for >> is one real use case that does something useful. >> >> > Yes, there are and I've given you a legitimate use case: in this > particular example, if the runtime can assume that no type coercion needs > to occur, it can skip that step all together, which means it performs > better. > > Rick > > > > >> >> On Mon, Oct 1, 2012 at 3:05 PM, Rick Waldron <waldron.r...@gmail.com>wrote: >> >>> >>> >>> On Mon, Oct 1, 2012 at 6:03 PM, Mark Hahn <m...@hahnca.com> wrote: >>> >>>> > Yes, it will work, that's not the point. >>>> >>>> Then give me an example that does make the point. I'm a little >>>> thick-headed. >>>> >>> >>> See my last email to Gustavo. >>> >>> Rick >>> >>> >>>> >>>> >>>> On Mon, Oct 1, 2012 at 2:59 PM, Rick Waldron <waldron.r...@gmail.com>wrote: >>>> >>>>> >>>>> >>>>> On Mon, Oct 1, 2012 at 5:53 PM, Mark Hahn <m...@hahnca.com> wrote: >>>>> >>>>>> > The above example is fairly contrived >>>>>> >>>>>> And useless. The JS would work fine passing it a number. >>>>>> >>>>> >>>>> Did you actually read the entire example? I said that for you, but >>>>> thanks for the additional coverage. >>>>> >>>>> Yes, it will work, that's not the point. The point is that the runtime >>>>> can optimize the execution if it can find ways to make assumptions about >>>>> the code it's executing. One the most common is based on types. >>>>> >>>>> >>>>> Rick >>>>> >>>>> >>>>> >>>>>> >>>>>> On Mon, Oct 1, 2012 at 2:36 PM, Rick Waldron >>>>>> <waldron.r...@gmail.com>wrote: >>>>>> >>>>>>> >>>>>>> >>>>>>> On Mon, Oct 1, 2012 at 5:15 PM, Gustavo Machado <machad...@gmail.com >>>>>>> > wrote: >>>>>>> >>>>>>>> >>>>>>>> For less sophisticated developers (most people, and most of the VS >>>>>>>>> market), the compiler errors will remove much debugging frustration >>>>>>>>> and >>>>>>>>> allow them to focus on creating rather than debugging. >>>>>>>>> >>>>>>>>> >>>>>>>> It also allows them to focus on "creating" instead of understanding >>>>>>>> what they are doing. Take the sample on the playground for instance: >>>>>>>> >>>>>>>> constructor (message: string) { >>>>>>>> this.greeting = message; >>>>>>>> } >>>>>>>> >>>>>>>> will translate to: >>>>>>>> >>>>>>>> function Greeter(message) { >>>>>>>> this.greeting = message; >>>>>>>> } >>>>>>>> >>>>>>>> If you can only handle string, should you not be doing a check and >>>>>>>> writing a proper message? What will happen to javascript users that >>>>>>>> consume >>>>>>>> your code generated with TypeScript? It's not a huge gain IMO, and a >>>>>>>> few >>>>>>>> CONS: >>>>>>>> >>>>>>>> - only get intellisense in VS (a gigantic IDE which will handle >>>>>>>> from databases, to manual tests). >>>>>>>> - TypeScript seems to be making the code longer to type and less >>>>>>>> readable instead of shorter/better (like others do). >>>>>>>> - yet another language/dependency on your project. >>>>>>>> - most of the type-related things could be handled gracefully with >>>>>>>> comments. >>>>>>>> >>>>>>> >>>>>>> You can't get runtime optimizations with comments. >>>>>>> >>>>>>> >>>>>>> Take a look at this example: >>>>>>> >>>>>>> function f( a ) { >>>>>>> return "Hello Number " + a; >>>>>>> } >>>>>>> >>>>>>> // Say you called it like this, of course it will work, >>>>>>> // but the runtime won't necessarily optimize >>>>>>> // because you've given it no information about what >>>>>>> // it CAN optimize. Besides, you really wanted a string. >>>>>>> f(1); >>>>>>> >>>>>>> >>>>>>> // So enforce it... >>>>>>> function f( a: string ) { >>>>>>> return "Hello Number " + a; >>>>>>> } >>>>>>> >>>>>>> // throws on compilation >>>>>>> f(1); >>>>>>> >>>>>>> // Which would encourage you to go back to your code >>>>>>> // and make it a string: >>>>>>> f("1"); >>>>>>> >>>>>>> // Now it passes the compilation and this is what it outputs: >>>>>>> function f(a) { >>>>>>> return "Hello Number " + a; >>>>>>> } >>>>>>> f("1"); >>>>>>> >>>>>>> The point is that it made you think about what you were passing to >>>>>>> the function. >>>>>>> >>>>>>> >>>>>>> The above example is fairly contrived and I'm sure that most >>>>>>> runtimes will figure that specific case out and optimize just the same, >>>>>>> but >>>>>>> allow it to serve as a simplified example case. >>>>>>> >>>>>>> >>>>>>> Rick >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> Gus >>>>>>>> >>>>>>>> -- >>>>>>>> Job Board: http://jobs.nodejs.org/ >>>>>>>> Posting guidelines: >>>>>>>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >>>>>>>> You received this message because you are subscribed to the Google >>>>>>>> Groups "nodejs" group. >>>>>>>> To post to this group, send email to nodejs@googlegroups.com >>>>>>>> To unsubscribe from this group, send email to >>>>>>>> nodejs+unsubscr...@googlegroups.com >>>>>>>> For more options, visit this group at >>>>>>>> http://groups.google.com/group/nodejs?hl=en?hl=en >>>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Job Board: http://jobs.nodejs.org/ >>>>>>> Posting guidelines: >>>>>>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "nodejs" group. >>>>>>> To post to this group, send email to nodejs@googlegroups.com >>>>>>> To unsubscribe from this group, send email to >>>>>>> nodejs+unsubscr...@googlegroups.com >>>>>>> For more options, visit this group at >>>>>>> http://groups.google.com/group/nodejs?hl=en?hl=en >>>>>>> >>>>>> >>>>>> -- >>>>>> Job Board: http://jobs.nodejs.org/ >>>>>> Posting guidelines: >>>>>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "nodejs" group. >>>>>> To post to this group, send email to nodejs@googlegroups.com >>>>>> To unsubscribe from this group, send email to >>>>>> nodejs+unsubscr...@googlegroups.com >>>>>> For more options, visit this group at >>>>>> http://groups.google.com/group/nodejs?hl=en?hl=en >>>>>> >>>>> >>>>> -- >>>>> Job Board: http://jobs.nodejs.org/ >>>>> Posting guidelines: >>>>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >>>>> You received this message because you are subscribed to the Google >>>>> Groups "nodejs" group. >>>>> To post to this group, send email to nodejs@googlegroups.com >>>>> To unsubscribe from this group, send email to >>>>> nodejs+unsubscr...@googlegroups.com >>>>> For more options, visit this group at >>>>> http://groups.google.com/group/nodejs?hl=en?hl=en >>>>> >>>> >>>> -- >>>> Job Board: http://jobs.nodejs.org/ >>>> Posting guidelines: >>>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >>>> You received this message because you are subscribed to the Google >>>> Groups "nodejs" group. >>>> To post to this group, send email to nodejs@googlegroups.com >>>> To unsubscribe from this group, send email to >>>> nodejs+unsubscr...@googlegroups.com >>>> For more options, visit this group at >>>> http://groups.google.com/group/nodejs?hl=en?hl=en >>>> >>> >>> -- >>> Job Board: http://jobs.nodejs.org/ >>> Posting guidelines: >>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >>> You received this message because you are subscribed to the Google >>> Groups "nodejs" group. >>> To post to this group, send email to nodejs@googlegroups.com >>> To unsubscribe from this group, send email to >>> nodejs+unsubscr...@googlegroups.com >>> For more options, visit this group at >>> http://groups.google.com/group/nodejs?hl=en?hl=en >>> >> >> -- >> Job Board: http://jobs.nodejs.org/ >> Posting guidelines: >> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >> You received this message because you are subscribed to the Google >> Groups "nodejs" group. >> To post to this group, send email to nodejs@googlegroups.com >> To unsubscribe from this group, send email to >> nodejs+unsubscr...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/nodejs?hl=en?hl=en >> > > -- > Job Board: http://jobs.nodejs.org/ > Posting guidelines: > https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines > You received this message because you are subscribed to the Google > Groups "nodejs" group. > To post to this group, send email to nodejs@googlegroups.com > To unsubscribe from this group, send email to > nodejs+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/nodejs?hl=en?hl=en > -- Job Board: http://jobs.nodejs.org/ Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines You received this message because you are subscribed to the Google Groups "nodejs" group. To post to this group, send email to nodejs@googlegroups.com To unsubscribe from this group, send email to nodejs+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en