TS学习笔记--函数

函数

// 函数:封装了一些重复使用的代码,在需要的时候直接调用即可
(()=>{
    // 1、js函数书写
    // // 函数声明,命名函数
    // function add (x,y){
    //     return x+y
    // }

    // // 函数表达式,匿名函数
    // const add2 = function(x,y){
    //     return x+y
    // }

    // 2、ts函数书写
    // 函数声明,命名函数
    // ()中的内容代表xy的参数类型都是字符,小括号后的参数代表函数的返回值类型
    function add (x:string,y:string):string{
        return x+y
    }
    const result:string = add('111','222')
    console.log(result);
    
    // 函数表达式,匿名函数
    // 函数中的x和y参数的类型都是number类型的,小括号后面的代表返回的为number类型
    const add2 = function(x:number,y:number):number{
        return x+y
    }
    console.log(add2(10,20));
    
    // 函数完整的写法
    // add3代表变量名
    // (x:number,y:number)=>number 代表当前函数的类型
    // function(x:number,y:number):number 符合这个函数类型的值
    const add3:(x:number,y:number)=>number=function(x:number,y:number):number {
        return x+y
    }
    console.log(add3(10,100));
    

})()

可选参数

// 可选参数:函数在声明的时候,使用 ? 进行修饰,该参数可传可不传
// 默认参数:函数在声明的时候,内部的参数有自己的默认值,及时默认参数

(()=>{
    // 定义一个函数:传入姓氏和名字,可以得到姓名(姓名+名字=姓名)
    // 需求:如果不传入任何内容,那么返回默认的姓氏
    // 需求:如果只传入姓氏,那么就返回姓氏
    // 需求:如果传入姓氏和名字,那么返回来的就是姓名
    const getFullName = function(firstName:string='黄',lastName?:string):string{
        if(lastName){
            return firstName + '_' + lastName
        }else{
            return firstName
        }
    }

    // 函数调用
    // 什么也不传入
    console.log(getFullName());
    // 只传入姓氏
    console.log(getFullName('诸葛'));
     // 传入姓氏+姓名
    console.log(getFullName('诸葛','亮'));

})()

剩余参数

// 剩余参数(rest参数)
(()=>{
    // ...args:string[] ----> 剩余参数,放在一个字符串数组中
    function showMsg(str:string,...args:string[]){
        console.log(str);
        console.log(args);
        
    }
    showMsg('a','b','c','d')
})()

函数重载

// 函数重载:函数名字相同,函数的参数及个数不同
// 我们有一个add函数,它可以接收2个string类型的参数进行拼接,也可以接收2个number类型的参数进行相加 
(()=>{
    // 函数重载声明
    function add(x:string,y:string):string
    function add(x:number,y:number):number
    function add(x:string|number,y:string|number):string|number{
        if(typeof x ==='string' && typeof y==='string'){
            return x +y
        } else if(typeof x === 'number' && typeof y === 'number'){
            return x +y
        }
        // return x + y 
    }

    // 参数类型一致
    console.log(add('1','1'));
    // 参数类型不一致,希望ts给我提示出错误
    // console.log(add(1,'1'));

})()
posted @ 2021-04-08 15:21  xujing123  阅读(134)  评论(0编辑  收藏  举报