A good buddy (and great (Flex [Shhhh!!] programmer) wrote to me offline (to spare me embarassment) and asked, among other questions answered by Justin in his comment at the end of the previous blog entry, the following:
"I also didn't understand what you said about converting the typeless objects to typed variables being why intellisense works. What I can see in your screen shot is that the editor knows that "Convert" is a (static?) object with some type, and can display its methods. Is it also able to pop up an intellisense menu when you press "." after a variable name? If so, that would be an illustration of your point."
Good point. Here you go…
Intellisense is now treating mouseDownStoryBoard as if it is of type StoryBoard, at design time. That is, even though it is a var, it is effectively typed by the Convert statement.
I also want to draw your attention to Justin's explanation of why this does make Javascript (nearly) typed in the comments in the previous post. He does a nice job walking through one set of criteria for a typed language and showing that with his code, Javascript now meets those requirements.
But then I want to apologize. When I write here, I am not writing as Jesse Liberty, geek. I am writing, I'm told, as Jesse Liberty, blue badge Microsoft employee, Silverlight Geek, and I should learn to be more careful. Shawn, and my buddy above, and others were right to call me out on not qualifying what I was saying with more terms like "nearly typed" or "type-ish" or whatever, and re-reading my answer to Shawn I was far too defensive (fortunately, he too is a friend). I will be more careful in the future.
That said, the truth is that I also have this caveat: this is a blog, not an edited set of papers, and so I'm bound to get things wrong. Feel free to challenge me in the comments, I'll feel free to fix my mistakes, and we'll all live to see another day 🙂
Thanks again,
-j