Currently it works at the method's ASDoc, not at the class level.

Here's an excerpt:

        
/**
         * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
         * @flexjsignorecoercion HTMLBodyElement
         */
        COMPILE::JS
                override public function start():void
        {
            var body:HTMLBodyElement;
            
            // For createjs, the application is the same as the canvas
            // and it provides convenient access to the stage.
            
            element = document.createElement('canvas') as
WrappedHTMLElement;
            element.id = 'flexjsCanvas';
            element.width = 700;
            element.height = 500;
            
            body = document.getElementsByTagName('body')[0] as
HTMLBodyElement;
            body.appendChild(this.element);
            
...





On 12/2/15, 3:07 PM, "Josh Tynjala" <joshtynj...@gmail.com> wrote:

>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
>>
>>

Reply via email to