打字稿接受并返回受约束的泛型

时间:2020-11-02 02:07:30

标签: typescript typescript-typings typescript-generics

我想要一个可以接受字符串或字符串数​​组的函数。然后它将返回输入的相同数据类型。这是当前无法正常工作的代码示例。

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

1 个答案:

答案 0 :(得分: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[]

Playground link

Documentation on overloading