Всегда определяйте тип. Как уже упоминалось, если вы этого не сделаете, компилятор выберет для вас, и это может быть не так, как ожидалось.
Это также становится важным при работе с классами. Например, вы создаете приватную переменную 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
Если вы хотите вызвать метод MovieClip для mymc, скажем, play (), компилятор выдаст ошибку, потому что он не «знает», что у mymc есть метод play (как это будет?). Таким образом, печатая его (в смысле добавления к нему типа, такого как MovieClip), вы даете компилятору знать, какие методы и свойства должны быть доступны.
* * Пример тысяча двадцать-один: * * 1 022
var mymc:MovieClip = stage_mc; // Ahh, much better!
Это также позволяет компилятору выполнять проверку типов. Таким образом, в приведенном выше примере, если вы попытались передать текстовое поле в переменную movieclip mymc, ошибка приведет к ошибке. Это останавливает появление больших ошибок.
Я очень увлечен проверкой типов в AS3 - я рад, что Flash наконец-то представил ее, и теперь, когда она здесь, давайте использовать ее!