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.`