Нормально при компиляции проверить, что переданная функция принимает такие-то параметры - никак, ибо тип Function вот такая простая вещь. Я лично этому рад.
Можно передавать не функцию, а айдишник, делать switch по айдишнику и в нем писать имя private метода. Будет что надо, но switch я лично не люблю.
Можно поставить в функции проверку на тип аргументов и помирать с криками, если не те, но рантайм будет, да.
Но так ли нужна проверка при компиляции на тип данных? Это если там куча народу этот код пишет, то может есть смысл.
И это, врачи сильно рекомендуют не создавать динамически функции. Т.е. в любом случае рекомендую сделать.

Код AS3:
private function okStep1(someData1:SomeType1):void{
и уже okStep1 передавать.