0

我想要一个接受字符串或字符串数​​组的函数。然后它将返回输入的相同数据类型。这是当前不起作用的代码示例。

export default <T extends string | string[]>(s: T): T =>
  Array.isArray(s)
    ? s.map(handleString)
    : handleString(s)
4

1 回答 1

2

我会通过函数重载来做到这一点:

const handleString = (val: string) => val;

function example(s: string): string;
function example(s: string[]): string[];
function example(s: string | string[]): string | string[] {
    return Array.isArray(s)
      ? s.map(handleString)
      : handleString(s)
}

const a = example('a'); // a's type is string
const b = example(['b']); // b's type is string[]

游乐场链接

关于重载的文档

于 2020-11-02T02:14:27.780 回答