面试题答案
一键面试函数重载处理函数参数
- 参数类型声明:通过为同一个函数定义多个函数签名来实现,每个签名可以接受不同类型或数量的参数。例如:
function add(a: number, b: number): number;
function add(a: string, b: string): string;
function add(a: any, b: any): any {
return a + b;
}
这里定义了两个 add
函数的重载签名,一个接受两个 number
类型参数返回 number
,另一个接受两个 string
类型参数返回 string
。实际实现的函数可以接受任意类型参数,但是调用时会根据传入参数类型匹配对应的重载签名。
- 使用场景:适用于函数在不同参数类型下有不同行为逻辑的场景。比如上面
add
函数,根据传入参数类型不同执行不同的加法逻辑(数值相加或字符串拼接)。
联合类型处理函数参数
- 参数类型声明:在参数声明时使用
|
符号将多种可能的类型组合起来。例如:
function printValue(value: number | string) {
console.log(value);
}
这里 printValue
函数接受一个 number
或者 string
类型的参数。
- 使用场景:适用于函数在不同参数类型下执行相同或相似行为逻辑的场景。比如
printValue
函数,不管传入number
还是string
类型参数,都是简单的打印操作。
两者区别总结
- 参数类型声明:函数重载通过多个不同签名声明,联合类型在一个参数声明中用
|
组合类型。 - 使用场景:函数重载用于不同参数类型有不同行为逻辑,联合类型用于不同参数类型有相似行为逻辑。