On 1/7/16, 5:24 PM, "Andy Dufilie" <andy.dufi...@gmail.com> wrote:
>On Thu, Jan 7, 2016 at 4:55 PM, Alex Harui <aha...@adobe.com> wrote: > >> How many of you use the "as" keyword as part of a test? > > >I have a huge code base and I use "as" / "is" everywhere ( >https://github.com/WeaveTeam/Weave). My code depends on it behaving the >same way it does in ActionScript. IMO, being able to easily check if an >object extends or implements a class/interface is a huge advantage AS has >over JS. > > >> The reason I'm asking is because the use of "as" as become a negative >> factor in several cases: >> 1) In JS, it results in a function call >> > >Yes. In ActionScript, using "as" actually sped up the code in certain >situations, but in JS it is a performance hit. This is a very common >pattern in my code: > >if (obj is Thing1) > (obj as Thing1).foo(a,b); >else if (obj is Thing2) > (obj as Thing2).bar(x,y); There are no plans to change "is", just "as". Are you using "as" as a test or just "is". In the example above, you are using "as" just to make the compiler happy. >I see "is" and "as" as highly useful features, and I think it would be a >mistake to make the code cross-compile into something that behaves >differently by default. IMO if cross-compiled code behaves differently >than the original then it's being mangled and can't be trusted. That's the root of my question: how many folks us "as" to actually convert data vs just make the compiler happy. Again, no plans to change "is". > >A related issue is when setting a typed variable or passing in a parameter >to a function, it will do type coercion automatically in AS but that >behavior is lost when cross-compiling to JS. For example, I have >situations like this where I now have to add manual type casting, and I >wish the compiler would do that automatically: > >var str:String = value_which_may_be_a_number; What error are you getting? I thought the auto-conversion worked for both JS and AS. -Alex