类型推断
类型推断在什么时候发生?
- 含义: 没有显式标注类型时, 编译器按规则判断类型;
- 基本类型推断: 由表达式右侧的值推断左侧变量类型;
let x = 3; // number, 由初始化值推断
function add(a: number, b: number = 1) {
return a + b; // 返回类型推断为 number
}
- 常见来源: 变量初始化、函数默认参数值、函数
return语句;
最佳通用类型如何为数组选类型?
- 场景: 有多个候选类型时, 需要选出一个能容纳所有成员的类型;
- 规则: 按最佳通用类型算法, 选择与所有数组子项类型兼容的类型;
const arr = [0, 1, null]; // (number | null)[]
上下文类型如何反推类型?
- 含义: 依据变量被使用的位置反推其类型;
- 典型场景: 事件处理函数中参数
e的类型由所在的事件绑定位置推断;
element.addEventListener("click", (e) => {
e.clientX; // e 被推断为 MouseEvent
});
- 边界: 上下文推断失败时类型退化为
any, 此时应显式标注;