我想要一个可以接受字符串或字符串数组的函数。然后它将返回输入的相同数据类型。这是当前无法正常工作的代码示例。
export default <T extends string | string[]>(s: T): T =>
Array.isArray(s)
? s.map(handleString)
: handleString(s)
答案 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[]