面试题答案
一键面试类型推断基本原理
TypeScript的类型推断是在编译阶段,根据代码的上下文信息自动推导出变量、函数参数和返回值等的类型。它基于静态分析,无需开发者显式声明所有类型,减少了代码冗余。例如,当声明变量并赋值时:
let num = 10; // num被推断为number类型
TypeScript依据初始值10
推断num
为number
类型。
函数返回值类型推断(未显式声明时)
当函数返回值类型未显式声明,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,因为有两种不同类型的返回值
函数内部不同代码结构对类型推断结果的影响
- 条件语句:如上述
getValue
函数,不同分支的return
语句会导致联合类型的推断。 - 循环语句:
function sumArray(arr: number[]) {
let sum = 0;
for (let num of arr) {
sum += num;
}
return sum;
}
// 函数返回值被推断为number,因为循环内操作的是number类型数据,最终返回的sum也是number类型
- 函数调用:
function multiply(a: number, b: number) {
return a * b;
}
function operate() {
return multiply(2, 3);
}
// operate函数返回值被推断为number,因为调用的multiply函数返回number类型