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.箭头函数
  • 相关阅读:
    hdu 5446 Unknown Treasure lucas和CRT
    Hdu 5444 Elven Postman dfs
    hdu 5443 The Water Problem 线段树
    hdu 5442 Favorite Donut 后缀数组
    hdu 5441 Travel 离线带权并查集
    hdu 5438 Ponds 拓扑排序
    hdu 5437 Alisha’s Party 优先队列
    HDU 5433 Xiao Ming climbing dp
    hdu 5432 Pyramid Split 二分
    Codeforces Round #319 (Div. 1) B. Invariance of Tree 构造
  • 原文地址:https://www.cnblogs.com/zhangning187/p/tsfunzn210411.html
Copyright © 2011-2022 走看看