TypeScript 4.0 现已正式发布,该版本没有重大的突破性变化。TypeScript 团队表示新版本继续使用与过去版本相似的版本控制模型,可将 4.0 视作 3.9 的延续升级版本。而且他们也一直在追求不牺牲主要灵活性的情况下,提供一个最大限度减少 breaking changes 的升级路径。
事实上,如果你是这个语言的新手,现在是开始使用它的最好时机。社区已经在这里了,而且还在增长,有工作代码和伟大的新资源可以学习。有一点要记住:尽管我们在 4.0 中带来了所有的好东西,但你真的只需要知道 TypeScript 的基础知识就可以了。
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 // 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);
详情可查看发布公告。
相关文章
Win11专业版 64位中文版 V2022 微软最新系统
2022-06-17Win11正式版下载_微软官方Msdn原版 V2022
2022-06-16Msdn Win11正式版 64位下载_微软简体中文版
2022-06-16微软推出新的 Windows 11 验证操作系统
2022-06-16Win11系统下载_微软原版 Win11正式版操作系统
2022-06-14微软向 Win11 任务栏添加类似 Win10 的搜索栏
2022-06-14微软尝试在 Win11 23H2 任务栏上使用搜索小部件
2022-06-14微软正在 Win11 任务栏上测试新的搜索小部件
2022-06-11微软:避免在不受支持的 PC 上意外发布 Win11 22H2
2022-06-11微软 Win11 Build 25136 中的新增功能
2022-06-11