找回密码
 立即注册

QQ登录

只需一步,快速开始

  • QQ空间
  • 回复
  • 收藏
9 月 10 日消息,微软公司昨日(9 月 9 日)发布博文,宣布推出 TypeScript 5.6 正式版,主要进一步完善空值合并与真值检查,支持禁用类型检查等等。
推荐系统:win11系统下载
TypeScript 简介
注:TypeScript 是一种在 JavaScript 基础上通过添加类型语法构建的语言。


类型(Types)用于描述开发者对变量、参数和函数的形态,而 TypeScript 类型检查器可以在开发者运行代码之前,帮助筛查诸如拼写错误、遗漏属性以及错误的函数调用等问题。


TypeScript 编辑器还引入了自动补全、代码导航和重构等功能,用户可以在 Visual Studio 和 VS Code 等编辑器中体验。


使用命令
用户可以通过以下命令使用 npm 开始使用 TypeScript:


npm install -D typescript
或者可以通过 NuGet 方式获取。


新版变化
禁止使用空值合并(Nullish)与真值检查(Truthy Checks)


TypeScript 5.6 继续完善检查“可疑代码”,现在能够在发现表达式计算结果始终为 TRUE 时抛出错误,如正则表达式,函数表达式等:


  1. if (/0x[0-9a-f]/) {

  2. //  ~~~~~~~~~~~~

  3. // error: This kind of expression is always truthy.

  4. }

  5. if (x => 0) {

  6. //  ~~~~~~

  7. // error: This kind of expression is always truthy.

  8. }

  9. function isValid(value: string | number, options: any, strictness: "strict" | "loose") {

  10.     if (strictness === "loose") {

  11.         value = +value

  12.     }

  13.     return value < options.max ?? 100;

  14.     //     ~~~~~~~~~~~~~~~~~~~

  15.     // error: Right operand of ?? is unreachable because the left operand is never nullish.

  16. }

  17. if (

  18.     isValid(primaryValue, "strict") || isValid(secondaryValue, "strict") ||

  19.     isValid(primaryValue, "loose" || isValid(secondaryValue, "loose"))

  20. ) {

  21.     //                    ~~~~~~~

  22.     // error: This kind of expression is always truthy.

  23. }
复制代码

通过启用 ESLint 的 no-constant-binary-expression 规则,同样可以实现类似效果,你可以在他们的博客文章中看到部分成果。


然而,TypeScript 新增的检查与 ESLint 规则并非完全重叠,并且微软认为将这些检查内置于 TypeScript 本身具有很大价值。


Iterator Helper 方式


JavaScript 中存在可迭代对象(可以通过调用 [Symbol.iterator]() 来遍历的对象)和迭代器(具有 next () 方法的对象,我们可以调用该方法以在遍历过程中尝试获取下一个值)的概念。


Iterable 和 IterableIterator 在 JavaScript 中随处可见,但许多人反馈自己怀念 Array 上的方法,比如 map 、 filter ,出于某种原因还有 reduce 。


  1. function* positiveIntegers() {

  2.     let i = 1;

  3.     while (true) {

  4.         yield i;

  5.         i++;

  6.     }

  7. }

  8. const evenNumbers = positiveIntegers()map(x = x * 2)

  9. // Output

  10. //    2

  11. //    4

  12. //    6

  13. //    8

  14. //   10

  15. for (const value of evenNumbers.take(5)) {

  16.     console.log(value)

  17. }
复制代码

这就是为什么最近在 ECMAScript 中提出了一项提案,要将 Array 中的许多方法(及更多)添加到 JavaScript 中生成的大多数 IterableIterator 上。

青苹果系统官网:www.pggho.com
发表评论
登录后参与评论 / 立即注册
用户反馈
QQ群