zoukankan      html  css  js  c++  java
  • 02、TypeScript 中的函数

    // 函数的定义
    /*// es5 函数声明
    function run() {
      return 'run'
    }
    // 匿名函数定义
    let run2 = function () {
      return 'run2'
    }*/
    
    // 1.ts 函数声明,指定返回值类型
    function run11(): string {
      return 'run'
    }
    
    // 匿名函数,指定返回值类型
    let run12 = function (): number {
      return 123;
    }
    
    // 2.ts 定义方法传参
    function getInfo(name: string, age: number): string {
      return `${name} --- ${age}`
    }
    
    // 没有返回值的方法,通过 void 声明
    function run22(): void {
      console.log(111);
    }
    
    console.log(getInfo('zhangning', 24));
    
    // 3.方法可选参数
    // es5 中方法的实参和形参可以不一样,但是 ts 中必须一样,如果不一样就需要配置可选参数
    // age? 表示可选参数,可传可不传,可选参数必须配置到参数的最后面
    function getInfo1(name: string, age?: number): string {
      if (age) {
        return `${name} --- ${age}`
      } else {
        return `${name} --- 年龄保密`
      }
    }
    
    getInfo1('zhangning');// 不传也不会报错
    
    // 4.默认参数(可选参数)
    // es5 不可以设置默认参数,es6 和 ts 都可以设置默认参数
    function getInfo2(name: string, age: number = 20): string {
      return `${name} --- ${age}`
    }
    
    getInfo2('zhangning');
    
    // 5.剩余参数
    function sum(a: number, b: number, c: number, d: number, ...rest: Array<number>): number {
      var sum = a + b + c + d;
      for (let i = 0; i < rest.length; i++) {
        sum += rest[i]
      }
      return sum;
    }
    
    sum(1, 2, 3, 4, 5, 6, 7)
    
    // 6.函数重载
    // java 中方法的重载:重载指的是两个或者两个以上同名函数,但它们的参数不一样,这时就出现函数重载的情况
    // typescript 中的重载,通过为同一个函数提供多个函数类型定义来实现多种功能的目的
    // ts 为了兼容 es5 以及 es6 重载的写法和 java 中有区别
    
    // es5 中出现同名的方法,会替换
    /*
    function css(config) {}
    function css(config, val) {}
    */
    
    // ts 中的重载
    function getI(name: string): string;
    function getI(age: number): number;
    function getI(str: any): any {
      if (typeof str === 'string') {
        return `姓名:${str}`
      } else {
        return `年龄:${str}`
      }
    }
    
    getI('zhangning');// zhangning
    getI(24);// 24
    // getI(false);// 错误的写法,因为没有找到参数匹配
    
    // ts 中的重载,参数不同
    function getI1(name: string): string;
    function getI1(name: string, age: number): string;
    function getI1(name: string, age?: number): any {
      if (age) {
        return `姓名:${name}----年龄:${age}`
      } else {
        return `年龄:${name}`
      }
    }
    
    getI1('zhangning');
    getI1('zhangning', 24);
    // getI1(24);// 错误的写法,重载的方法中找不到
    
    // 7.箭头函数
  • 相关阅读:
    孙权用人之道:“六力”兼备
    JDK 自带工具试用(一)
    Apache ab 测试工具使用(一)
    Amoeba详细介绍
    TCP/IP 标志位 SYN ACK RST UTG PSH FIN
    ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'
    jsp 中声明方法的使用
    Java遍历一个文件夹下的全部文件
    WAMP 2.5 &quot;FORBIDDEN&quot; error
    LeetCode总结--二分查找篇
  • 原文地址:https://www.cnblogs.com/zhangning187/p/tsfunzn210411.html
Copyright © 2011-2022 走看看