MST
星途 面试题库

面试题:TypeScript类型推断之中等题

请解释TypeScript中函数参数和返回值的类型推断机制,并举例说明在函数重载的场景下类型推断是如何工作的。
37.0万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

函数参数和返回值的类型推断机制

在TypeScript中,类型推断是指编译器根据代码的上下文自动推导出变量或表达式的类型。

  1. 函数参数类型推断:当调用函数时,TypeScript会根据传入的参数类型来推断函数参数的类型。如果函数体中没有明确指定参数类型,编译器会根据第一次调用时传入的参数类型来确定参数类型。例如:
function greet(name) {
    return `Hello, ${name}!`;
}
let result = greet('John'); // 这里name被推断为string类型
  1. 函数返回值类型推断:TypeScript会根据函数体中返回语句的类型来推断函数的返回值类型。如果函数体中有多个返回语句,TypeScript会推断出这些返回值类型的联合类型。例如:
function getValue() {
    if (Math.random() > 0.5) {
        return 10;
    } else {
        return 'ten';
    }
}
let value = getValue(); // value的类型为number | string

函数重载场景下类型推断的工作方式

函数重载允许我们为同一个函数定义多个不同参数列表和返回值类型的函数签名。TypeScript根据调用时传入的参数类型来选择最合适的函数重载。例如:

// 函数重载声明
function add(a: number, b: number): number;
function add(a: string, b: string): string;

// 函数实现
function add(a: any, b: any): any {
    return a + b;
}

let numResult = add(1, 2); // 这里调用第一个重载,numResult类型为number
let strResult = add('a', 'b'); // 这里调用第二个重载,strResult类型为string

在上述代码中,TypeScript根据调用add函数时传入的参数类型来确定使用哪个函数重载,从而确定返回值的类型。如果传入的参数类型与任何一个重载签名都不匹配,编译器会报错。