zoukankan      html  css  js  c++  java
  • typeScript(三) 函数重载

    函数重载: 为同一个函数提供多个函数类型定义来进行函数重载。

    let suits = ["hearts", "spades", "clubs", "diamonds"];
    function pickCard(x: {suit: string; card: number; }[]): number;
    function pickCard(x: number): {suit: string; card: number; };
    function pickCard(x): any {
        // Check to see if we're working with an object/array
        // if so, they gave us the deck and we'll pick the card
        if (typeof x == "object") {
            let pickedCard = Math.floor(Math.random() * x.length);
           // return pickedCard;
            return 'pickedCard'; // 并不会报错,编译是通过的
        }
        // Otherwise just let them pick the card
        else if (typeof x == "number") {
            let pickedSuit = Math.floor(x / 13);
            return { suit: suits[pickedSuit], card: x % 13 };
        }
    }
    
    let myDeck = [{ suit: "diamonds", card: 2 }, { suit: "spades", card: 10 }, { suit: "hearts", card: 4 }];
    let pickedCard1 = myDeck[pickCard(myDeck)];
    alert("card: " + pickedCard1.card + " of " + pickedCard1.suit);
    
    let pickedCard2 = pickCard(15);
    alert("card: " + pickedCard2.card + " of " + pickedCard2.suit);
    

    函数重载其实就是: 多个函数函数名相同,函数的参数类型,顺序,个数不同。注意函数重载与返回值类型无关。ts的函数重载比较鸡肋,最终函数逻辑的实现还是在一个函数体内去判断它的参数类型,然后做相应的操作。ts重载的作用,感觉只是多了一个参数校验的功能。也就是说在进行函数调用的时候,会对参数进行检查,只有传入的参数类型,顺序,个数与定义的重载函数的参数相同,才能调用成功,否则报错。返回值类型不会进行校验(函数重载与返回值类型无关)。
    以上只是我现阶段自己的理解,做一个读后的笔记。

  • 相关阅读:
    Maven最全指南,看了必懂(转载)
    MySQL:数据库优化
    关于 MyBatis 10 种通用的写法
    Redis 性能问题分析(转载)
    前端对于服务端渲染(SSR)的理解
    JS 中的编码和解码(encode和decode)
    SEO、SPA、SSR的区别关系详解
    VUE 项目路由的两种模式(hash、history)
    Chrome和IE浏览器的渲染过程区别
    对于前端缓存的理解(缓存机制和缓存类型)
  • 原文地址:https://www.cnblogs.com/wangwenhui/p/14137486.html
Copyright © 2011-2022 走看看