Interesting.

So this only works with MXML or with ActionScript too?

I’m wondering if we can use this for typed arrays in externs compiled using 
compc.

I ran into that problem recently.

> On Mar 2, 2017, at 5:14 PM, Clint M <cmod...@gmail.com> wrote:
> 
> It's in the docs:
> http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf680e1-7ffe.html#WS2db454920e96a9e51e63e3d11c0bf69084-7a2c
> 
> ArrayElementType metadata tag
> 
> When you define an Array variable in ActionScript, you specify Array as the
> data type of the variable. However, you cannot specify the data type of the
> elements of the Array.
> 
> To allow the Flex MXML compiler to perform type checking on Array elements,
> you can use the [ArrayElementType] metadata tag to specify the allowed data
> type of the Array elements, as the following example shows:
> 
> public class MyTypedArrayComponent extends VBox {
> 
>    [ArrayElementType("String")]
>    public var newStringProperty:Array;
> 
>    [ArrayElementType("Number")]
>    public var newNumberProperty:Array;
>    ...
> }
> Note: The MXML compiler checks for proper usage of the Array only in MXML
> code; it does not check Array usage in ActionScript code.
> In this example, you specify String as the allowed data type of the Array
> elements. If a user attempts to assign elements of a data type other than
> String to the Array in an MXML file, the compiler issues a syntax error, as
> the following example shows:
> 
> <MyComp:MyTypedArrayComponent>
>    <MyComp:newStringProperty>
>        <fx:Number>94062</fx:Number>
>        <fx:Number>14850</fx:Number>
>        <fx:Number>53402</fx:Number>
>    </MyComp:newStringProperty>
> </MyComp:MyTypedArrayComponent>
> In this example, you try to use Number objects to initialize the Array, so
> the compiler issues an error.
> 
> You can also specify Array properties as tag attributes, rather than using
> child tags, as the following example shows:
> 
> <MyComp:MyTypedArrayComponent newNumberProperty="[abc,def]"/>
> This MXML code generates an error because Flex cannot convert the Strings
> "abc" and "def" to a Number.
> 
> You insert the [ArrayElementType] metadata tag before the variable
> definition. The tag has the following syntax:
> 
> [ArrayElementType("elementType")]
> The following table describes the property of the [ArrayElementType]
> metadata tag:
> 
> Property
> 
> Type
> 
> Description
> 
> elementType
> String
> 
> Specifies the data type of the Array elements, and can be one of the
> ActionScript data types, such as String, Number, class, or interface.
> 
> You must specify the type as a fully qualified class name, including the
> package.
> 
> On Thu, Mar 2, 2017 at 6:10 AM, Harbs <harbs.li...@gmail.com> wrote:
> 
>> I just noticed a few places in TLF where we have such metadata. For
>> example:
>> 
>>                [ ArrayElementType("text.elements.TextFlowLine") ]
>>                private var _lines:Array;
>> 
>> Does anyone know what that does?
>> 

Reply via email to