类型推断规则举例
- 初始化时推断:当变量在声明时被初始化,TypeScript 会根据初始化值推断其类型。
let num = 10; // num 被推断为 number 类型
let str = 'hello'; // str 被推断为 string 类型
let arr = [1, 2, 3]; // arr 被推断为 number[] 类型
- 函数返回值推断:函数的返回值类型会根据
return
语句返回的值推断。
function add(a, b) {
return a + b;
}
// 这里 add 函数返回值被推断为 number 类型(假设 a 和 b 是数字类型)
需要显式类型声明的情况及示例
- 变量声明未初始化:当变量声明时没有初始化,TypeScript 无法推断类型,需要显式声明。
let value: number;
// 如果不显式声明,value 的类型是 any,这可能导致运行时错误
- 函数参数类型不明确:当函数参数类型可能有多种,且需要明确类型约束时。
function printLength(str: string) {
console.log(str.length);
}
// 如果不声明 str 为 string 类型,传入非字符串值时可能导致运行时错误
- 复杂类型推断不准确:对于复杂的数据结构,类型推断可能不准确,需要显式声明。
let obj: { name: string, age: number };
obj = { name: 'John', age: 30 };
// 如果不显式声明 obj 的类型,TypeScript 可能无法准确推断其结构