zoukankan      html  css  js  c++  java
  • 009--函数(基本实例和函数类型)

    基本函数

    function  add(x, y) {
      return x + y
    }
    
    let myAdd = function(x, y) {
      return x + y
    }
    
    let z = 100
    function addToZ(x, y) {
      return x + y + z
    }

     给刚才的函数添加完整的函数类型

    //给刚才的函数添加类型
    function  add(x: number, y: number): number {
      return x + y
    }
    //给函数添加完整的函数类型
    let myAdd:(baseValue: number, increment: number)=> number = function(x: number, y: number): number {
      return x + y
    }

    函数类型推断

    //给函数添加完整的函数类型
    let myAdd:(baseValue: number, increment: number)=> number = function(x: number, y: number): number {
      return x + y
    }
    //上述函数可以拆分成下面两种
    // let myAdd = function(x: number, y: number): number {
    //   return x + y
    // }
    // let myAdd:(baseValue: number, increment: number)=> number = function(x, y) {
    //   return x + y
    // }
    //都会根据类型推断来推断出参数类型和返回值类型

    可选参数

    //在TypeScript中的参数只要定义了就是必须的,js中默认都是可选的
    function bulidName(firstName: string, lastName: string): string {
      return firstName + '' + lastName 
    }
    
    // let result1 = bulidName('Bob')//报错,只传了一个参数
    // let result2 = bulidName('Bob', 'Jack', 'Lisa')//报错,传入了三个参数
    let result3 = bulidName('Bob', 'Jack')
    //改造一下,让第二个参数可选
    function bulidName(firstName: string, lastName?: string): string {
      if(lastName) {
      return firstName + '' + lastName 
      }else {
        return firstName
      }
    }
    let result = bulidName('Bob')
    //可选参数,必须跟在必须参数的后面 

    函数默认值

    //函数默认值
    function bulidName(firstName: string, lastName = 'Smith'): string {
      return firstName + '' + lastName 
    }
    
    let result = bulidName('Bob')
    console.log(result)//BobSmith
    //函数默认值
    function bulidName(firstName = 'Bob', lastName: string ): string {
      return firstName + '' + lastName 
    }
    
    let result = bulidName('Jack', 'smith')
    let result1 = bulidName(undefined, 'Jons')
    console.log(result)//Jacksmith
    console.log(result1)//BobJons
    //如果想把默认参数放在前面,使用函数默认值的值的话则在函数调用时一定要在相应位置传入undefined

    剩余参数

    function bulidName(firstName = 'Bob', ...restOfName: string[] ): string {
      return firstName + '' + restOfName
    }
    
    let result = bulidName('Jack', 'smith')
    let result1 = bulidName(undefined, 'Jons')
    let result3 = bulidName('Jack', 'smith', 'Niclos')
    console.log(result)//Jacksmith
    console.log(result1)//BobJons
    console.log(result3)//Jacksmith,Niclos
    //如果想把默认参数放在前面,使用函数默认值的值的话则在函数调用时一定要在相应位置传入undefined

    剩余参数编译后

    function bulidName(firstName) {
        if (firstName === void 0) { firstName = 'Bob'; }
        var restOfName = [];
        for (var _i = 1; _i < arguments.length; _i++) {
            restOfName[_i - 1] = arguments[_i];
        }
        return firstName + '' + restOfName;
    }
    var result = bulidName('Jack', 'smith');
    var result1 = bulidName(undefined, 'Jons');
    var result3 = bulidName('Jack', 'smith', 'Niclos');
    console.log(result); //Jacksmith
    console.log(result1); //BobJons
    console.log(result3);

    带有剩余参数的函数定义

    function bulidName(firstName = 'Bob', ...restOfName: string[] ): string {
      return firstName + '' + restOfName
    }
    //带有剩余参数的函数定义
    let bulidNameFn: (fname: string, ...rest: string[]) => string = bulidName

    2019-05-28  11:38:16

    工欲善其事,必先利其器
  • 相关阅读:
    Spark面对OOM问题的解决方法及优化总结 (转载)
    spark rdd 宽窄依赖理解
    hive orc update
    hive sql 语句执行顺序及执行计划
    java 正则 贪婪匹配 匹配sql语句中的引号内容
    java 权重随机算法实现
    MySQL创建用户和加限权
    MySQL完整性约束
    MySQL基础操作与数据类型
    MySQL数据库初识
  • 原文地址:https://www.cnblogs.com/ccbest/p/10936259.html
Copyright © 2011-2022 走看看