微软发布 TypeScript 5.6:完善空值合并和真值检查

新闻
微软公司9 月 9 日发布博文,宣布推出 TypeScript 5.6 正式版,主要进一步完善空值合并与真值检查,支持禁用类型检查等等。

9 月 10 日消息,微软公司昨日(9 月 9 日)发布博文,宣布推出 TypeScript 5.6 正式版,主要进一步完善空值合并与真值检查,支持禁用类型检查等等。

TypeScript 简介

IT之家注:TypeScript 是一种在 JavaScript 基础上通过添加类型语法构建的语言。

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

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

使用命令

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

npm install -D typescript

或者可以通过 NuGet 方式获取。

新版变化

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

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

if (/0x[0-9a-f]/) {
//  ~~~~~~~~~~~~
// error: This kind of expression is always truthy.
}
if (x => 0) {
//  ~~~~~~
// error: This kind of expression is always truthy.
}
function isValid(value: string | number, options: any, strictness: "strict" | "loose") {
    if (strictness === "loose") {
        value = +value
    }
    return value < options.max ?? 100;
    //     ~~~~~~~~~~~~~~~~~~~
    // error: Right operand of ?? is unreachable because the left operand is never nullish.
}
if (
    isValid(primaryValue, "strict") || isValid(secondaryValue, "strict") ||
    isValid(primaryValue, "loose" || isValid(secondaryValue, "loose"))
) {
    //                    ~~~~~~~
    // error: This kind of expression is always truthy.
}

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

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

Iterator Helper 方式

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

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

function* positiveIntegers() {
    let i = 1;
    while (true) {
        yield i;
        i++;
    }
}
const evenNumbers = positiveIntegers()map(x = x * 2)
// Output
//    2
//    4
//    6
//    8
//   10
for (const value of evenNumbers.take(5)) {
    console.log(value)
}

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

责任编辑:庞桂玉 来源: IT之家
相关推荐

2024-07-30 10:27:10

TypeScript配置TS

2022-09-21 13:44:59

TypeScript微软

2020-08-23 09:16:46

Linux文件合并和排序

2020-08-24 17:26:09

Linux合并文件排序文件

2020-10-18 10:47:22

空值合并运算符 '??

2011-05-25 16:44:01

JavaScriptCSS

2009-03-13 08:53:48

微软智能机平台

2023-03-17 07:05:41

TypeScriptJSDoc 功能

2012-10-08 09:15:57

JavaScriptJSTypeScript

2021-04-29 08:27:06

druidundertowMetrics

2021-03-19 07:03:39

Windows 10X操作系统微软

2016-10-31 14:57:55

Python单元测试assertTrue

2009-11-18 09:25:15

Opera10.10 Unite功能

2011-04-07 11:22:11

CentOS 5.6

2013-10-14 14:24:54

RedHat红帽RHEL

2013-04-10 13:52:14

2017-01-13 23:06:45

swiftios

2009-09-23 11:59:48

Office 2010Web程序漏洞

2011-01-24 14:34:12

webOS

2023-05-24 09:54:27

微软Windows 11Moment 3
点赞
收藏

51CTO技术栈公众号