Я немного смущен. Не приводит ли это к ошибкам времени компиляции:
function enforceType(var_a:int, var_b:String) {
trace("passed");
}
enforceType(1, 'test');
enforceType(1, 1);
enforceType('test', 1);
Это, конечно, для меня.
EDIT
Поскольку вы отредактировали свой вопрос, я отредактирую свой ответ.
AS3 IS статически типизированный IF Вы явно вводите свои переменные.
Пример:
var a:int = 0;
a = "TEST";
// a is typed as an int, therefor when you attempt to compile the above,
// you will get a compile time error
// 1067: Implicit coercion of a value of type String to an unrelated type int.
var a = 0;
a = "TEST";
// Here, a is not typed explicitly, so you can assign whatever type you want, and
// the compiler will not complain.
Итак, вкратце, AS3 статически типизирован, если вы хотите, чтобы это было. Невозможно заставить компилятор узнать, какой тип вы на самом деле хотели назначить, так как это статический тип во время компиляции.
Представьте, например, что вы определяете нетипизированную статическую переменную bar в классе Foo.
package
class Foo {
public static var bar;
}
}
Теперь в двух разных местах вашей программы вы получаете доступ к Foo. Эти две разные точки доступа основаны на событиях, вызванных взаимодействием с пользователем, например щелчком мыши. В ваших двух обработчиках событий у вас есть следующее:
// In one handler you have
Foo.bar = 1;
// and in another handler
Foo.bar = "test";
Компилятор не сможет узнать, какой из них будет запущен первым, поскольку оба они основаны на взаимодействии с пользователем. Все, что может сделать компилятор, это сказать: если это произойдет, это нормально? И в этом случае, так как бар не напечатан, все в порядке.
Если класс Foo изменен на:
package
class Foo {
public static var bar:String;
}
}
Тогда компилятор будет знать, что первый обработчик событий, указанный выше, не в порядке, потому что bar был статически типизирован как String.
Короче говоря (и урок, который нужно выучить): избавьтесь от своей вредной привычки и начните вводить переменные. Вы будете рады, что сделали.
Для справки .