账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Typescript类型检查问题
    49
    0

    翻阅官方文档,函数重载的类型检查有下面的例子:

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

    尝试将第四行
    function pickCard(x: number): {suit: string, card: number};
    改成
    function pickCard(x: number): {suit: string, card: boolean};
    为什么ts不会检查出类型错误?此时pickedCard2使用了这一行重载类型,return出来的类型应该不能通过类型检查。请教为什么?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 疾风一符 普通会员 1楼
      { "error": "Failed to generate content." }
    更多回答
    网站公告
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部