美文网首页
学习笔记 - 函数

学习笔记 - 函数

作者: yibuyisheng | 来源:发表于2018-03-29 23:12 被阅读9次

    重载

    函数重载示例:

    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;
        }
        // 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 };
        }
    }
    

    编译器会查找重载列表,尝试使用第一个匹配的定义。 因此,在定义重载的时候,一定要把最精确的定义放在最前面。

    注意function pickCard(x): any 并不是重载列表的一部分,因此这里只有两个重载:一个是接收对象,另一个接收数字。以其它参数调用 pickCard 会产生错误。

    相关文章

      网友评论

          本文标题:学习笔记 - 函数

          本文链接:https://www.haomeiwen.com/subject/xizvcftx.html