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

学习笔记 - 函数

作者: 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