The chief quality of Vectors is that they hold a single type of object. This is why they are sometimes called “typed arrays”. So what would happen if you wanted to convert an array of mixed-type objects into a vector?

Consider the naive approach:

var arr:Array = [33,"hello",new Point(2,4)];
var vec:Vector.<*> = Vector.<*>(arr);
trace(vec);

Which prints…

33,hello,(x=2, y=4)

Tada! Well that was easy. So let’s go a little further and see what happens in a couple of different scenarios. First, let’s ratchet down from the * type to the Object type:

var arr:Array = [33,"hello",new Point(2,4)];
var vec:Vector.<Object> = Vector.<Object>(arr);
trace(vec);

This works just as well since all of the elements are also Objects:

33,hello,(x=2, y=4)

How about if we try converting to each element type?

var arr:Array = [33,"hello",new Point(2,4)];
var vecNum:Vector.<Number> = Vector.<Number>(arr);
trace(vecNum);
var vecStr:Vector.<String> = Vector.<String>(arr);
trace(vecStr);
var vecPoint:Vector.<Point> = Vector.<Point>(arr);
trace(vecPoint);

This seems to convert element-by-element:

33,NaN,NaN
33,hello,(x=2, y=4)
Error: TypeError: Error #1034

The error is due to the lack of a built-in conversion from String and Number to Point. This all seems perfectly reasonable to me. The only possible “gotcha” here is if you don’t understand this element-by-element conversion. This doesn’t apply to you though, since you’ve read this article.