MST

星途 面试题库

面试题:TypeScript中默认参数的常见使用场景及注意事项

在TypeScript中,阐述默认参数在函数定义中的常见使用场景,并说明使用默认参数时可能会遇到哪些类型相关的注意事项。
49.6万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

默认参数常见使用场景

  1. 简化函数调用:当函数某些参数在多数情况下使用相同的值时,通过设置默认参数,调用者在调用函数时可省略这些参数。例如:
function greet(name = 'Guest') {
    console.log(`Hello, ${name}!`);
}
greet(); // 输出 Hello, Guest!
greet('John'); // 输出 Hello, John!
  1. 向后兼容:在更新函数接口时,添加新参数并设置默认值,原有调用代码无需修改。如:
// 旧函数
function calculate(a, b) {
    return a + b;
}
// 新函数,添加了一个新参数c并设置默认值
function calculate(a, b, c = 0) {
    return a + b + c;
}
// 旧调用代码仍可正常工作
calculate(1, 2); 
// 新调用可使用新参数
calculate(1, 2, 3); 
  1. 提供合理的默认配置:对于一些需要配置参数的函数,提供默认配置,让调用者可按需覆盖。比如:
function ajax(url, options = { method: 'GET', headers: {} }) {
    // 执行AJAX请求逻辑
}
ajax('/api/data'); // 使用默认配置
ajax('/api/data', { method: 'POST', headers: { 'Content-Type': 'application/json' } }); // 覆盖默认配置

类型相关注意事项

  1. 默认参数的类型推断:默认参数的类型会影响函数参数的类型推断。若默认参数类型不明确,TypeScript可能无法正确推断。例如:
// 这里TypeScript会推断x为number类型
function add(x = 1, y: number) {
    return x + y;
}
// 如果默认参数类型模糊,会导致错误
function add(x = '1', y: number) { // 报错,'1' 类型不能赋值给 'number' 类型
    return x + y;
}
  1. 与剩余参数的结合使用:当函数既有默认参数又有剩余参数时,要注意参数顺序和类型匹配。剩余参数必须在默认参数之后,且类型需正确定义。例如:
function log(message: string, ...values: any[] = []) {
    console.log(message, ...values);
}
log('Hello'); 
log('Numbers:', 1, 2, 3); 
  1. 函数重载与默认参数:在使用函数重载时,默认参数的类型要与重载定义匹配。如果不匹配,会导致运行时错误或类型检查错误。例如:
function printValue(value: string): void;
function printValue(value: number): void;
function printValue(value: any, prefix = 'Value: '): void {
    console.log(prefix + value);
}
printValue('Hello'); 
printValue(123); 

这里默认参数 prefix 的类型要保证在所有重载情况下都合理,否则会出现类型不匹配问题。