Avatar ·

TypeScript中的函数重载:如何正确声明和使用?

大家好!我刚开始学习TypeScript,在尝试使用函数重载时遇到了问题。我有一个`format`函数,它应该根据传入参数的类型以不同方式工作: 1. 如果传入字符串和数字——用重复次数格式化字符串。 2. 如果传入两个字符串——通过分隔符将它们合并。 3. 如果只传入数字——将其作为带前缀的字符串返回。 我写了这样的代码,但TypeScript报错: ```typescript function format(a: string, b: number): string; function format(a: string, b: string): string; function format(a: number): string; function format(a: string | number, b?: string | number): string { if (typeof a === 'number') { return `ID: ${a}`; } if (typeof b === 'number') { return a.repeat(b); } if (typeof b === 'string') { return `${a} - ${b}`; } return a; } ``` 错误信息:`This overload signature is not compatible with its implementation signature.`