Update to 5.7
2024/11/23 发布了 5.7版本,下面看看都有哪些更新
检查从未初始化的变量
长期以来,TypeScript 已经能够捕获变量在所有先前分支中尚未初始化时出现的问题
let result: number;// 一些条件判断if (someCondition()) { result = doSomeWork();} else { let temporaryWork = doSomeWork(); temporaryWork *= 2; // 这里如果忘记给 result 分配 值}
console.log(result); // 错误: 变量“result”在赋值之前使用。不幸的是,有些地方这种分析不起作用。例如,如果在单独的函数中访问变量,类型系统不知道何时调用该函数,而是“乐观”地认为变量将被初始化。
也就是说如果变量在函数内使用,TS不知道何时会调用这个函数,会被认为该变量即将被初始化;
function foo() { let result: number if (someCondition()) { result = doSomeWork(); } else { let temporaryWork = doSomeWork(); temporaryWork *= 2; // 这里忘记给 result 分配 值 }
printResult();
function printResult() { console.log(result); // 这儿没有错误 }}虽然 TypeScript 5.7 对可能已初始化的变量仍然比较宽容,但是当变量根本没有初始化时,类型系统能够报告错误。
function foo() { let result: number
// 其他逻辑,但是忘记给 result 赋值了
function printResult() { console.log(result); // 会产生error级错误:变量“result”在赋值之前使用。 }}