TypeScript的函数写法详解

typeScript中的函数

   1、函数的定义
   2、可选参数
   3、默认参数
   4、剩余参数
   5、函数重载
   6、箭头函数  es6

1、函数的定义

//es5定义函数的方法
   
    //函数声明法
        function run(){
    
    

            return 'run';
        }
    //匿名函数
        var run2=function(){
    
    

            return 'run2';
        }




//ts中定义函数的方法

 //函数声明法
        function run():string{
    
    

           return 'run';
        }


        //错误写法
         function run():string{
    
    

             return 123;
         }


//匿名函数


     var fun2=function():number{
    
    

         return 123;
    }

    alert(fun2()); /*调用方法*/





//ts中定义方法传参

  
        function getInfo(name:string,age:number):string{
    
    

                return `${
      
      name} --- ${
      
      age}`;
        }


        alert(getInfo('zhangsan',20));

   

    var getInfo=function(name:string,age:number):string{
    
    

       return `${
      
      name} --- ${
      
      age}`;
     }
       
    alert(getInfo('zhangsan',40));




//没有返回值的方法

         function run():void{
    
    

            console.log('run')
         }
        run();


2、方法可选参数

        // es5里面方法的实参和行参可以不一样,但是ts中必须一样,如果不一样就需要配置可选参数 


        function getInfo(name:string,age?:number):string{
    
    

                if(age){
    
    

                    return `${
      
      name} --- ${
      
      age}`;
                }else{
    
    

                    return `${
      
      name} ---年龄保密`;
                }


        }

        alert(getInfo('zhangsan'))

        alert(getInfo('zhangsan',123))
       



    //注意:可选参数必须配置到参数的最后面

    //错误写法
      
       function getInfo(name?:string,age:number):string{
    
    

                if(age){
    
    

                    return `${
      
      name} --- ${
      
      age}`;
                }else{
    
    

                    return `${
      
      name} ---年龄保密`;
                }
             
        }

        alert(getInfo('zhangsan'))
  

3、默认参数 可选参数

        // es5里面没法设置默认参数,es6和ts中都可以设置默认参数

    

                function getInfo(name:string,age:number=20):string{
    
    

                            if(age){
    
    

                                return `${
      
      name} --- ${
      
      age}`;
                            }else{
    
    

                                return `${
      
      name} ---年龄保密`;
                            }
                        

                }

                // alert( getInfo('张三'));
                alert( getInfo('张三',30));
      

4、剩余参数

            function sum(a:number,b:number,c:number,d:number):number{
    
    

             return a+b+c+d;

           }

           alert(sum(1,2,3,4)) ;


    //三点运算符 接受新参传过来的值


   
            function sum(...result:number[]):number{
    
    

                
                var sum=0;

                for(var i=0;i<result.length;i++){
    
    

                    sum+=result[i];  
                }

                return sum;

            }

            alert(sum(1,2,3,4,5,6)) ;
   


        function sum(a:number,b:number,...result:number[]):number{
    
    

                    
                var sum=a+b;

                for(var i=0;i<result.length;i++){
    
    

                    sum+=result[i];  
                }

                return sum;

            }

            alert(sum(1,2,3,4,5,6)) ;

5、ts函数重载

    java中方法的重载:重载指的是两个或者两个以上同名函数,但它们的参数不一样,这时会出现函数重载的情况。

   typescript中的重载:通过为同一个函数提供多个函数类型定义来试下多种功能的目的。

  ts为了兼容es5 以及 es6 重载的写法和java中有区别。



    //es5中出现同名方法,下面的会替换上面的方法 
   
            function css(config){
    
    

            }

            function css(config,value){
    
    


            }
       

    //ts中的重载

                function getInfo(name:string):string;

                 function getInfo(age:number):string;

               function getInfo(str:any):any{
    
    

                   if(typeof str==='string'){
    
    

                      return '我叫:'+str;
                     }else{
    
    

                        return '我的年龄是'+str;
                     }

                 }

                alert(getInfo('张三'));   //正确


               alert(getInfo(20));   //正确


              alert(getInfo(true));    //错误写法

    

                function getInfo(name:string):string;
                function getInfo(name:string,age:number):string;
                function getInfo(name:any,age?:any):any{
    
    
                    if(age){
    
    

                        return '我叫:'+name+'我的年龄是'+age;
                    }else{
    
    

                        return '我叫:'+name;
                    }
                }

                 alert(getInfo('zhangsan'));  /*正确*/

               alert(getInfo(123));  错误

               alert(getInfo('zhangsan',20));

6、箭头函数 es6

   this指向的问题    箭头函数里面的this指向上下文


         setTimeout(function(){
    
    

           alert('run')
       },1000)



        setTimeout(()=>{
    
    

            alert('run')
        },1000)
    

猜你喜欢

转载自blog.csdn.net/qq_27674439/article/details/106189422