TypeScript 4.0 Beta
TypeScript 4.0 Beta 已发布,整体看来,此版本在兼容性方面没有特别大的变化。因为 TypeScript 团队表示新版本继续使用与过去版本相似的版本控制模型,可将 4.0 视作 3.9 的延续升级版本。而且他们也一直在追求不牺牲主要灵活性的情况下,提供一个最大限度减少 breaking changes 的升级路径。
可通过 NuGet 或在 npm 中使用以下命令进行 Beta 版的测试:
npm install typescript@beta
4.0 主要新功能
- 可变参数元组类型 (Variadic Tuple Types)
- 标记的元组元素 (Labeled Tuple Elements)
- 构造函数的类属性推断 (Class Property Inference from Constructors)
- 短路分配运算符 (Short-Circuiting Assignment Operators)
catch
子句中的unknown
- 定制 JSX 工厂
- 带
--noEmitOnError
参数build
模式下的速度提升 --incremental
with--noEmit
- 编辑器改进
- 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 // v sideLength!: number; // ^^^^^^^^ // type annotation constructor(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 to a || (a = b);
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
TensorFlow 2.3.0-rc0 发布
TensorFlow 2.3.0 的首个候选版本发布了,主要特性和改进包括: tf.data添加了两种新机制来解决输入管道瓶颈并节省资源 snapshot tf.data service. 详情可查看使用 TF Profiler 分析输入管道性能的详细指南。 tf.distribute.TPUStrategy现在是一个稳定的 API,不再被视为 TensorFlow 的实验版本。 (先前的tf.distribute.experimental.TPUStrategy)。 TF Profiler 引入了两个新工具:一个用于在一段时间内可视化模型内存使用情况的内存分析器,以及一个允许用户在模型中跟踪 python 函数调用的 python 跟踪器。可用性方面的改进包括更好的诊断消息和配置文件选项,以自定义主机和设备跟踪的详细程度。 引入了对 Keras 预处理层 API(tf.keras.layers.experimental.preprocessing.*)的实验支持,以处理数据预处理操作,并支持复合张量输入。 现在,TFLite 能够在转换和推理期间正确支持动态形状。新版本还为 XNNP...
- 下一篇
巡云轻论坛系统 4.7 发布,包含多项更新
v4.7 主要更新: 1、增加修改问题答案功能。 2、增加修改问题答案回复功能。 3、增加只读模式设置。 4、前台手机端提问题标签选择优化。 5、前台手机端用户中心功能优化。 6、修复移动端动态不能分页错误。 7、管理后台升级模块增加RSA签名验证。 8、修复话题评论回复免审核判断错误。 9、富文本增加插入代码功能。 10、允许注册用户类型增加微信设置。 轻论坛系统简介 巡云轻论坛系统包含论坛、问答模块。系统采用JAVA+MYSQL架构,自适应手机端和电脑端,界面简洁,性能高效。数据库表结构设计使用分表方案,提高系统的负载能力。 后台数据库备份/还原、全站指定目录打包、一键自动升级等功能使维护简单方便。 演示网站:http://www.diyhi.com/cms.html页面可获取前后台演示地址、登录账号和密码 开源代码托管平台 码云:https://gitee.com/diyhi/bbs github:https://github.com/diyhi/bbs
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长