Если вы просто хотите иметь возможность принимать любой тип, вы можете использовать *
, чтобы разрешить любой тип:
function someFunction( xx:*, yy:*, flag:Boolean = true )
{
if (xx is Number) {
...do stuff...
} else if (xx is String) {
...do stuff...
} else {
...do stuff...
}
}
Если у вас есть большое количество различных параметров, где порядок не важен, используйте объект параметров:
function someFunction( options:Object )
{
if (options.foo) doFoo();
if (options.bar) doBar();
baz = options.baz || 15;
...etc...
}
Если у вас переменное количество параметров, вы можете использовать параметр ...
(остальные) :
function someFunction( ... args)
{
switch (args.length)
{
case 2:
arr = args[0];
someBool = args[1];
xx = arr[0];
yy = arr[1];
break;
case 3:
xx = args[0];
yy = args[1];
someBool = args[2];
break;
default:
throw ...whatever...
}
...do more stuff...
}
Для случаев, когда вам нужно вызвать общую функцию для нескольких классов, вы должны указать интерфейс, общий для каждого класса:
function foo( bar:IBazable, flag:Boolean )
{
...do stuff...
baz = bar.baz()
...do more stuff...
}