总是定义一个类型。如前所述,如果您不这样做,编译器会为您选择,并且可能与预期不同。
在处理类时它也变得很重要。比如你在你的类中创建一个私有变量foo,比如:
private var _foo; // no type is defined
稍后,您想为其添加一个 get/set 属性:
public function get foo():??? { return _foo; }
public function set foo(val:???):void { _foo = val; }
你会传递什么?你如何记录这个供其他人使用?
好像你有的地方
private var _foo:Number;
public function get foo():Number { return _foo; }
public function set foo(val:Number):void { _foo = val; }
很明显,foo 在 get/set 情况下的作用很明显。
还有一件事。如果您想创建一个引用舞台上某些内容的 MovieClip 变量,请说:
var mymc = stage_mc; // Hmmm, not so good
如果你想在 mymc 上调用一个 MovieClip 方法,比如 play(),编译器会抛出一个错误,因为它不“知道”mymc 有一个 play 方法(它会怎么做?)。因此,通过键入它(在向其添加类型的意义上,例如 MovieClip),您可以让编译器知道哪些方法和属性应该可用。
例子:
var mymc:MovieClip = stage_mc; // Ahh, much better!
它还允许编译器进行类型检查。所以在上面的例子中,如果你试图将一个文本字段传递给movieclip变量mymc,一个错误就会抛出一个错误。这可以阻止更大的错误潜入。
我非常热衷于 AS3 中的类型检查 - 我很高兴 Flash 终于推出了它,现在它就在这里,让我们使用它吧!