跳到主要内容

类型推断

类型推断在什么时候发生?​

  • 含义: 没有显式标注类型时, 编译器按规则判断类型;
  • 基本类型推断: 由表达式右侧的值推断左侧变量类型;
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, 此时应显式标注;