喜欢就关注我们吧!

整体看来,此版本在兼容性方面没有特别大的变化。因为 TypeScript 团队表示新版本继续使用与过去版本相似的版本控制模型,可将 4.0 视作 3.9 的延续升级版本。

而且他们也一直在追求不牺牲主要灵活性的情况下,提供一个最大限度减少 breaking changes 的升级路径。

4.0 版本的主要更新内容如下:

  • 可变参数元组类型

  • 标记的元组元素

  • 构造函数的类属性推断

  • 短路分配运算符

  • catch 子句中的unknown

  • 定制 JSX 工厂

  • --noEmitOnError参数build模式下的速度提升

  • --incremental with --noEmit

  • 编辑器改进

    • 转换为可选链接

    • 支持/** @deprecated */

    • 启动时的部分编辑模式

    • 更智能的自动导入

  • Breaking Changes

构造函数的类属性推断

当 noImplicitAny 被启用时,TypeScript 4.0 现在可以使用控制流分(control flow analysis)析来确定类中的属性类型。

class Square {// Previously: implicit any!// Now: inferred to `number`!area;sideLength;constructor(sideLength: number) {this.sideLength = sideLength;this.area = sideLength ** 2;}
}

如果并非将构造函数的所有路径都分配给实例成员,则该属性可能被视为undefined

class Square {sideLength;constructor(sideLength: number) {if (Math.random()) {this.sideLength = sideLength;}}get area() {return this.sideLength ** 2;//     ~~~~~~~~~~~~~~~// error! Object is possibly 'undefined'.}
}

在更清楚的情况下(例如具有某种initialize方法),如果位于strictPropertyInitialization中,可能会需要显式类型注释以及定值赋值断言(!)

class Square {// definite assignment assertion//        vsideLength!: number;//         ^^^^^^^^// type annotationconstructor(sideLength: number) {this.initialize(sideLength)}initialize(sideLength: number) {this.sideLength = sideLength;}get area() {return this.sideLength ** 2;}
}

短路分配运算符

JavaScript 和其他很多语言都支持复合赋值运算符。复合赋值运算符将一个运算符应用到两个参数上,然后将结果赋值到左边。如下:

/ Addition
// a = a + b
a += b;// Subtraction
// a = a - b
a -= b;// Multiplication
// a = a * b
a *= b;// Division
// a = a / b
a /= b;// Exponentiation
// a = a ** b
a **= b;// Left Bit Shift
// a = a << b
a <<= b;

JavaScript 中的许多运算符都有一个对应的赋值运算符,但有三个例外:逻辑和(&&)、逻辑或(||),以及空值合并(??)。

TypeScript 4.0 为上述三个运算符增加了对应的赋值运算符支持:

let values: string[];// Before
(values ?? (values = [])).push("hello");// After
(values ??= []).push("hello");
a ||= b;// actually equivalent toa || (a = b);

▼  往期精彩回顾 ▼

被盯上了?美国知名媒体 TechCrunch 关注中国建设独立开源平台 Gitee

以假乱真?加州伯克利分校的学生用 GPT-3 生成伪文章成功骗得 26000 访问

2019 年 Dota2 比赛中,AI 战胜世界冠军的最强算法在这里!

开源≠免费!GNU 对自由软件的定义:与免费无关

Flink-分布式的冯诺伊曼机器

觉得不错,请点个在看呀

TypeScript 4.0 发布相关推荐

  1. 国内首个 App SDK 国家标准成功立项;苹果意外泄露iPhone 12发布时间;TypeScript 4.0 发布| 极客头条

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 国内要闻 国内首个 App SDK 国家标准成功立项,华为. ...

  2. 苹果意外泄露iPhone 12发布时间;阿里将停止印度部分服务;TypeScript 4.0 发布| 极客头条...

    整理 | 屠敏 头图 | CSDN 下载自东方 IC 快来收听极客头条音频版吧,智能播报由出门问问「魔音工坊」提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极 ...

  3. TypeScript 2.0 正式发布

    9 月 22 日,TypeScript 2.0 正式发布了. TypeScript 是微软开发的开源的编程语言,主要负责人是 C# 之父 Anders Hejlsberg. TypeScript 成功 ...

  4. TypeScript 2.0 已发布

    微软最近发布了TypeScript 2.0,该版本提供了简化的声明文件获取.Non-nullable类型,以及Readonly修饰符. TypeScript项目经理Daniel Rosenwasser ...

  5. 〔译〕TypeScript 2.0 候选版发布

    相关链接 TypeScript 2.0 正式版已经发布了:[译]TypeScript 2.0 正式版发布 不过可能大家更关心的是 [译]TypeScript 2.0 的新特性 原文:Announcin ...

  6. 微软TypeScript 3.0重磅发布!扶我起来,我还学得动

    web前端教程 用大白话,来讲编程 北京时间7月31日,微软宣布推出 TypeScript 3.0 正式版.TypeScript 3.0 是一个新的里程碑. 官方表示,尽管版本号是一个大变化,但 3. ...

  7. 小米、QQ等8款手机浏览器发布自查整改公告;AMD宣布收购赛灵思;​TypeScript 4.0.5发布|极客头条

    整理 | 郑丽媛 头图 | CSDN 下载自东方 IC 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 国内 ...

  8. 雷军:小米MIX α量产难度太大已放弃;iPhone 12系列将支持北斗导航;TypeScript 4.0 RC发布|极客头条

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 国内要闻 雷军:小米MIX α量产难度太大,已放弃了 小米近 ...

  9. 罗永浩回应被中消协点名;传前淘宝直播运营负责人因贪污被阿里通报;TypeScript 4.0 Beta发布​ | 极客头条...

    整理 | 屠敏 头图 | CSDN 下载自视觉中国 快来收听极客头条音频版吧,智能播报由出门问问「魔音工坊」提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客 ...

最新文章

  1. HighGUI图像用户界面初步(滑动条、鼠标操作)
  2. 关于javascript的介绍
  3. mysql允许用户远程连接_mysql允许用户远程连接
  4. Python中异常处理的用法
  5. apply()与call()的区别
  6. android onSaveInstance方法项目中的实践
  7. SOA面向服务架构——SOA的概念
  8. 谈谈运维监控那些事儿
  9. kafka安装_kafka 安装部署教程
  10. python爬虫模拟登陆校园网+连接校园wifi
  11. MySQL数据库编程(C++)介绍
  12. 爬虫python创意_爬虫案例:利用python爬虫关键词批量下载高清大图
  13. spring配置与监听mysql_spring boot (8)mybatis配置监听,
  14. ZLMediaKit视频推流和播放步骤
  15. 还自己写代码?VBA录制宏了解下
  16. MacM1本地navicat无法连接本地docker的mysql。
  17. 七大IT业界顶尖认证证书
  18. dynamic linke library example (C/C++)
  19. python爬虫——Ajax-get
  20. Maven Archetype使用教程与具体使用方法

热门文章

  1. 求指教、。。。关于调用so文件
  2. 文件目录管理与显示c语言,Centos 7 文件和目录管理
  3. 微软 word转换pdf_如何将行转换为Microsoft Word表中的列
  4. 绘制三维散点图_SPSS统计作图教程:三维散点图
  5. 【C】C语言结构体指针的语法
  6. ETL工具kettle的组件--生成记录
  7. chrome调试工具高级不完整使用指南(基础篇)
  8. IE8采用IE7模式
  9. TypeError: 'MongoClient' object is not callable
  10. Linux入门之进程管理(4)之进程与文件