Interesting... I didn't know about that. How would @flexjsignorecoercion be used? In the asdocs for a class, like this?
/** * @flexjsignorecoercion */ public class MyClass {} If I'm understanding your correctly, when using this tag, the JS output would not pass the value to Language.as()? //as var test = something as MyClass; //js var test = something; //instead of Language.as(something) If that's how it works, I think it might be good enough for my needs. - Josh On Wed, Dec 2, 2015 at 2:51 PM, Alex Harui <aha...@adobe.com> wrote: > > > On 12/2/15, 2:37 PM, "Josh Tynjala" <joshtynj...@gmail.com> wrote: > > >Oh, I see. I didn't realize that you were thinking that users would import > >something and also manually call require(). In that case, yes, you could > >still potentially have proper type checking. > > > >I like the idea of using some kind of wrapper class to hide the require() > >call. It's kind of messy to both import and call require(), so I really > >would prefer to hide one or the other, if possible. > > It's up to you or whoever writes this code. A wrapper adds a layer of > function calls but does let you hide some ugliness. > > > > >There's one thing that seems like an issue to me, though. Using an as cast > >with require() will probably result in a null result because what is > >returned by require("fs") doesn't actually extend an FS class (or > >implement > >an FS interface). > > > >var fs:FS = require("fs") as FS; > > We have this problem already. There is a special ASDoc tag called > @flexjsignorecoercion that suppresses "as" code in the cross-compiled > output. I've considered trying to get the compiler to automatically > suppress the "as" code for any "as" usage that references a class in an > external-library-path SWC. That seems like it could fail you in some > distributed development cases where you have other code that does support > AS in an external-library-path SWC. We could add file-level suppression > as well, or have a config option that lists certain coercions to always > suppress. Definitely open to ideas on this, but the fact is, the compiler > will not let you have type-checking without using "as" so you sort of have > to have a scheme to deal with it. > > -Alex > >