如何在 Typescript 中对重载函数进行命名导出?

How to do a named export of an overloaded function in Typescript?

pickCard.ts

示例来自:

https://www.typescriptlang.org/docs/handbook/functions.html#overloads

function pickCard(x: { suit: string; card: number }[]): number;
function pickCard(x: number): { suit: string; card: number };
function pickCard(x: any): 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 };
  }
}

export pickCard; // DOES NOT WORK

我不能使用像这样的函数表达式:export const pickCard = () => {}; 因为重载对函数表达式不起作用。

问题

如何对 pickCard 函数进行命名导出。注意:名字应该是pickCard

这对我有用:

export function pickCard(x: { suit: string; card: number }[]): number;
export function pickCard(x: number): { suit: string; card: number };
export function pickCard(x: any): 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 };
  }
}

在其他文件中使用:

import { pickCard } from ".";

pickCard([{ suit: 'test', card: 10 }]);
pickCard(21);