function calculateLengthOrAverage(str: string): number;
function calculateLengthOrAverage(...nums: number[]): number;
function calculateLengthOrAverage(param: string | number, ...args: number[]): number {
if (typeof param ==='string') {
return param.length;
} else {
let sum = param;
for (let num of args) {
sum += num;
}
return sum / (args.length + 1);
}
}
好处
- 代码清晰:通过函数重载,不同调用方式的逻辑被清晰地分开,增强了代码的可读性和可维护性。调用者可以明确知道传入不同类型参数时函数的预期行为。
- 类型安全:TypeScript在编译阶段就能检查参数类型,避免运行时错误。比如调用
calculateLengthOrAverage("hello")
时,如果错误传入数字,TypeScript会给出类型错误提示。
- 灵活性:利用剩余参数
...args
,可以方便地处理数量不定的数字参数,使得函数在计算平均值时更加通用,适应不同数量数字的计算需求。