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