TypeScript 4.2 发布

脱发程序员 2021-02-25 10:08:00 ⋅ 810 阅读

TypeScript 4.2 已经发布。TypeScript是一种开源语言,它通过添加静态类型定义在 JavaScript(全球最常用的工具之一)的基础上构建。

主要更新内容

  • 更智能的类型别名保护。TypeScript 4.2 将通过保留一段时间内最初编写和构造的内容来跟踪类型的构造方法,还会跟踪并区分将别名键入其他别名的实例。
  • 元组类型中 rest 元素支持放在任意位置。在TypeScript 4.2中,rest 元素在使用方式上进行了专门的扩展。在以前的版本中,TypeScript 仅允许 rest 元素位于元组中的最后一个位置。但是,现在 rest 元素可以在元组中的任何位置出现。唯一的限制是,后面不能存在其他可选元素或 rest 元素。换句话说,每个元组仅一个 rest 元素,rest 元素之后没有可选元素。
interface Clown { /*...*/ }
interface Joker { /*...*/ }

let StealersWheel: [...Clown[], "me", ...Joker[]];
//                                    ~~~~~~~~~~ Error!
// A rest element cannot follow another rest element.

let StringsAndMaybeBoolean: [...string[], boolean?];
//                                        ~~~~~~~~ Error!
// An optional element cannot follow a rest element.
  • 更严格地检查 in 操作符。在 JavaScript 中,在 in 运算符的右侧使用非对象类型是一个运行时错误。现在,TypeScript 4.2 确保可以在编码时捕获它。
"foo" in 42
//       ~~
// error! The right-hand side of an 'in' expression must not be a primitive.
  • 支持  abstract 构造签名。将 abstract 修饰符添加到构造签名表示可以在 abstract 构造函数中传递。这并不会阻止用户传递其他“具体”的类/构造函数,实际上只是表明没有意图直接运行构造函数,因此可以安全地传递任何一种类类型。
abstract class SuperClass {
    abstract someMethod(): void;
    badda() {}
}
type AbstractConstructor<T> = abstract new (...args: any[]) => T
function withStyles<T extends AbstractConstructor<object>>(Ctor: T) {
    abstract class StyledClass extends Ctor {
        getStyles() {
            // ...
        }
    }
    return StyledClass;
}
class SubClass extends withStyles(SuperClass) {
    someMethod() {
        this.someMethod()
    }
}
  • 支持 --explainFiles 选项。使用此选项时,TypeScript 编译器将给出一些非常冗长的输出,说明文件为何最终进入程序。
  • 通过 --strictNullChecks 选项优化逻辑表达式中的未调用函数检查。
function shouldDisplayElement(element: Element) {
    // ...
    return true;
}
function getVisibleItems(elements: Element[]) {
    return elements.filter(e => shouldDisplayElement && e.children.length)
    //                          ~~~~~~~~~~~~~~~~~~~~
    // This condition will always return true since the function is always defined.
    // Did you mean to call it instead.
}
  • 可选属性和字符串索引签名之间的规则更加宽松。
  • 帮助发现声明缺失。

​​​​​​​

详细内容请查看更新公告


全部评论: 0

    我有话说:

    【开源资讯】TypeScript 4.0.5 发布

    TypeScript 4.0.5 发布了,本次更新主要解决了 4.0 版本以来出现的一些问题,提高了整体的稳定性。详细更新如下:BUG 修复1、解决了对于版本 4.0,创建可释放程序包删除

    Swagger接口文档工具:Knife4j 2.0.7 发布,细节优化

    Knife4j前身是swagger-bootstrap-ui,是一个为Swagger接口文档赋能的工具 文档:https://doc.xiaominfo.com 效果(旧版):http

    Angular 11.1.0 正式发布,支持 TypeScript 4.1

    Angular 是一个基于 TypeScript 的开源前端框架,由 Google 的 Angular 团队以及社区共同领导。Angular 是由 AngularJS 的同一个开发团队完全重写而成的

    Spring Boot 2.4.0-RC1, 2.1.18, 2.2.11 和 2.3.5 发布

    Spring Boot 多个分支发布了新版本,分别是 2.4.0-RC1, 2.1.18, 2.2.11 和 2.3.5。 Spring Boot 2.4.0-RC1 此版本是 

    Spring Boot 2.4.5 & 2.3.10 发布

    Spring Boot 2.4.5 & 2.3.10 现已发布。本次更新是错误修复版本,分别包含 57 个与 78 个错误修复。 主要更新内容 2.4.5 当 spring.main

    Spring Boot 2.4.3、2.3.9 版本发布

    Spring Boot 2.4.3 、2.3.9 已经发布。现在可从 repo.spring.io 和 Maven Central 获得。 <parent>   

    【开源资讯】Spring Boot 2.4.0.M4 发布

    Spring Boot 2.4.0 的第四个里程碑版本发布了,可以从里程碑仓库获取。此版本包含 145 项更新内容,亮点如下:1、改进故障分析器(Failure Analyzer

    Spring Framework 5.3.4 和 5.2.13 发布

    Spring Framework 5.3.4 和 5.2.13 已发布,5.3.4 版本包括 62 项修复和改进,5.2.13 包含 18 项修复和改进。具体如下。 v5.3.4 部分新特性 在

    Openfire 4.6.2 发布,即时消息传输平台

    Openfire 4.6.2 发布了。Openfire 是一个使用广泛采用的即时消息开放协议 XMPP(也称为 Jabber)的 RTC(Real Time Collaboration,实时协作

    Traefik 2.3.4 发布,HTTP 反向代理与负载均衡工具

    Traefik 2.3.4 现已发布,该版本更新内容如下: Bug fixes: [acme] 更新 go-acme/lego 至 v4.1.2 [k8s

    Apache HBase 最新发布2.0.4 ,分布式数据库

    HBase 2.0.4 主要修复了 2.0.3 和 2.1.1 版本中 HBASE-21551 Bug。此外还包括 31 项 Bug 修复。

    TeamCity 2020.2.4 发布,持续集成工具

    TeamCity 2020.2.4 发布了。TeamCity 是一款功能强大的持续集成工具,覆盖服务器端和客户端。它提供一系列特性可以让团队快速实现持续集成:IDE 工具集成、各种消息通知

    Micronaut 2.4.2 发布,基于 JVM 的微服务应用框架

    ,Micronaut 2.4.2 正式发布,本次更...

    TypeScript教程

    VSCode+TypeScript 开发Nodejs只有更溜

    Druid 1.2.4 版本发布,增强 SQL Parser,支持 JDK8 日期类型

    Druid 1.2.4 版本现已发布,这个是一个小的 bug 修复版本,修复了一系列 SQL Parser 的问题,增强对 JDK 8 的支持。 Issues SQL Parser 增强对

    TypeScript教程

    TypeScript--用的人都说好👌

    Deno 1.8.1 发布,基于 V8 的 TypeScript 运行时

    Deno 1.8.1 现已发布,Deno 是 V8 上的安全 TypeScript 运行时。 此版本更新内容如下: fix(cli/ast):将 importsNotUsedAsValues 传递

    Apache APISIX 2.4 发布,云原生的微服务 API 网关

    Apache APISIX 2.4 已经发布。Apache APISIX 是一个云原生微服务 API 网关,它提供了高性能、安全、开源和可扩展的平台,基于 Nginx 和 etcd,支持动态路由和插

    Micronaut 2.4.0 发布,基于 JVM 的微服务应用框架

    ,Micronaut 2.4.0 正式发布,本次更...