class Promise { public function then():Promise { return null; } } typedef Thenable = { function then():Thenable; } class Main { static function main() { var p:Promise = null; var t:Thenable = p; } }