为什么这个typescript重载示例不起作用

为什么这个typescript重载示例不起作用,typescript,Typescript,我是从这个页面学习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 { // Che

我是从这个页面学习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;
    }
    // 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): any {


错误状态下存在一个隐式any

但这不一定是你不想要的

正如@Cerberus在评论中指出的,您可以在any中键入
x`


或者,您可以在操场上推销您的选项(转到选项并取消选中复选框
no implicit any
),这样您就可以在编写教程时运行代码

在您的示例中,什么不起作用?我只看到过一个错误-
参数'x'隐式地有一个'any'类型
,它是通过在更改为x后显式地键入
x
作为
any
@Cerberus来解决的:any,它工作,首先我认为它的官方文档,它不可能是错误的,我是错误的。好吧,这是一个错误,只有当相应的设置(
noImplicitAny
)已启用。为了简单起见,文档可能会跳过此步骤。
function pickCard(x: number | {suit: string; card: number; }[]): any {