TypeScript 3.5 发布,修复了 12 个错误

近日,微软官方推出了 TypeScript 3.5 版本。在这个版本中,修复了 12 个错误,并新增了一些很好的特性,让 TypeScript 又更加强大了。在本篇文章中,我们将详细了解这些新特性,以及如何使用它们来提高我们的开发效率。

新特性

--allowUmdGlobalAccess

如果我们需要访问全局 UMD 模块,TypeScript 中的控制严格导致将会无法访问,这会在一些场景下给我们带来不必要的麻烦。但其实在某些情况下,我们又确实需要使用全局 UMD 模块。因此在这个版本中,TypeScript 增加了一个 --allowUmdGlobalAccess 选项,用于允许访问全局 UMD 模块。

比如说,我需要使用全局变量 jQuery,但是因为控制严格导致无法访问,就需要使用这个选项进行开启:

declare global {
  const jQuery: any;
}

// --allowUmdGlobalAccess
const $ = jQuery;

setImmediate() 类型定义

setImmediate() 是一个比较有用的 Web API,但是在 TypeScript 中的类型定义并不完整。在这个版本中,TypeScript 修补了这一点,完善了 setImmediate() 的类型定义。

declare function setImmediate(callback: (...args: any[]) => void, ...args: any[]): number;

更好的索引访问类型检查

在 TypeScript 3.4 中,TypeScript 引入了更加强力的类型推断能力,即在访问索引类型时,类型系统会根据上下文自动推断相关类型。在这个版本中,TypeScript 进一步加强了索引访问类型的能力:

type MyObj = {
  a: number;
  b: string;
};

// 下面这条语句会得到 `string`
type B = MyObj['b'];

以更好的方式检测 null

在这个版本中,TypeScript 引入了一个新的语法,可以更好地处理 null 值:

function getName(x: string | undefined | null) {
  return x?.toUpperCase();
}

上面的例子中,我们可以看到,可以在访问属性时使用 ?.,表示只有当前值不为 null 或 undefined 时,才会执行后面的方法。

对 RAM 限制的优化

在这个版本中,TypeScript 对于 RAM 限制的优化有了明显的提升。对于一些大型项目,可以有效的减小内存占用。

修复的错误

除了上述新增特性之外,TypeScript 3.5 还修复了一些已知的错误。下面是其中几个值得注意的错误:

  • 修复了一个关于 import types 的编译错误;
  • 修复了一个关于 object spread 的编译错误;
  • 修复了在一些极端情况下存在的 bug,带来良好的性能提升。

总结

到目前为止,TypeScript 已经成为了前端开发中不可或缺的一部分。在这次 TypeScript 3.5 版本更新中,新增的特性可以让我们在开发过程中更加高效,修复的错误可以有效地提升项目的稳定性和性能。因此,我们应该积极地学习和使用这些新特性,以便更加顺利地完成我们的开发任务。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65b6226badd4f0e0ffed354c