MST

星途 面试题库

面试题:TypeScript类型推断机制剖析

请阐述TypeScript中类型推断的基本原理,在函数返回值类型未显式声明时,TypeScript是如何推断出返回值类型的?举例说明函数内部不同代码结构对类型推断结果的影响。
11.6万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

类型推断基本原理

TypeScript的类型推断是在编译阶段,根据代码的上下文信息自动推导出变量、函数参数和返回值等的类型。它基于静态分析,无需开发者显式声明所有类型,减少了代码冗余。例如,当声明变量并赋值时:

let num = 10; // num被推断为number类型

TypeScript依据初始值10推断numnumber类型。

函数返回值类型推断(未显式声明时)

当函数返回值类型未显式声明,TypeScript会根据函数体内的return语句来推断返回值类型。例如:

function add(a: number, b: number) {
    return a + b;
}
// 函数add返回值类型被推断为number,因为return语句返回的是a + b,其结果为number类型

如果函数内有多个return语句,TypeScript会推断返回值类型为这些return语句返回值类型的联合类型。例如:

function getValue(random: boolean) {
    if (random) {
        return 10;
    } else {
        return 'hello';
    }
}
// getValue返回值类型被推断为number | string,因为有两种不同类型的返回值

函数内部不同代码结构对类型推断结果的影响

  1. 条件语句:如上述getValue函数,不同分支的return语句会导致联合类型的推断。
  2. 循环语句
function sumArray(arr: number[]) {
    let sum = 0;
    for (let num of arr) {
        sum += num;
    }
    return sum;
}
// 函数返回值被推断为number,因为循环内操作的是number类型数据,最终返回的sum也是number类型
  1. 函数调用
function multiply(a: number, b: number) {
    return a * b;
}
function operate() {
    return multiply(2, 3);
}
// operate函数返回值被推断为number,因为调用的multiply函数返回number类型