前端资讯TypeScript 2.7 发布
Posted FEPulse
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端资讯TypeScript 2.7 发布相关的知识,希望对你有一定的参考价值。
近日,TypeScript 2.7 发布。你可以通过 npm install -g typescript 安装最新的版本。
下面看看有哪些更新吧~
Stricter class property checks(更严格的类属性检查)
TypeScript 2.7 引入了一个叫 "--strictPropertyInitialization" 的标志,要求每个实例的属性都有初始值,初始值既可以在 constructor 中设置,也可以在声明时设置。看下面的示例:
示例中 bar 在声明时设置了初始值,foo 在 constructor 中设置了初始值,而baz 没有在任何地方设置初始值,所有 TS 会报错。
需要注意的是,--strictPropertyInitialization 将与其他 --strict 模式标志一起打开,你可以在 tsconfig.json 的 compilerOptions 中将 strictPropertyInitialization 设置为 false,或者在命令行上将 --strictPropertyInitialization 设置为 false 来关闭此检查。
Definite assignment assertions(明确的赋值断言)
这是 TS 的一个新的语法(在属性名后加一个感叹号),告诉 TS 一个类的属性将来一定会被赋值。除了用在类属性上,这个新语法也可以被用于变量声明中。看个示例:
Easier ECMAScript module interoperability(更简单的 ES 模块互操作性)
为了给用户提供与 Babel 或 Webpack 相同的运行时行为,TypeScript 提供了一个新的 --esModuleInterop 标志。在新的--esModuleInterop标志下,这些可调用的 CommonJS 模块必须被以 default import 形式导入。
unique symbol types and const-named properties(unique symbol 类型和常量命名属性)
TypeScript 2.7 可以更好地理解 symbol 类型,先看个示例:
例子中,TS 可以追踪 x 的两个属性使用到了 symbol 类型的常量: Foo 和 Bar,在这里 TS 给了 Foo 和 Bar 一个新的类型:unique symbol。unique symbol 是 symbol 的子类型,可以通过调用 Symbol() 、 Symbol.for() 或者显式类型声明来生成 unique symbol 类型的值,unique symbol 只可用于常量声明和只读静态属性上,可以看下面的正确或错误使用示例:
Cleaner output in --watch mode(watch 模式下更清晰的输出)
TypeScript 的 --watch 模式现在在请求重新编译之后清除屏幕,这可以使读取当前编译的信息更加容易。
Prettier --pretty output(更加人性化的错误输出)
TypeScript 的 --pretty 标志可以使错误信息更易于阅读和管理,本次更新中对错误信息的文件、诊断信息和行号做了高亮,另外对文件名称和位置做了格式化,以便快速跳到相应的文件中去。
Numeric Separators(数字分隔符)
TypeScript 2.7 引入了 ECMAScript 中的 numeric separator 提案,该功能允许用户在数字之间放置下划线(_),以便直观地区分数字组。
Fixed Length Tuples(固定长度元组)
现在你可以为元组类型设置一个 length 值,在此之前,[number, string, string] 被认为是 [number, string] 的子类型,但这是不合理的。现在给元组加了 length 之后,这样,赋值时就要严格按照 length 规定来。
in operator narrowing and accurate instanceof(“类型窄化”)
TypeScript 2.7 为类型窄化带来了两个新的变化。首先,instanceof 运算符现在利用了继承链而不是依赖于结构兼容性,更准确地反映了 instanceof 在运行时是如何运行的。其次,in 操作符现在充当了一个 "type guard" 的角色。
Smarter object literal inference(更加智能的字面推断)
上面的例子中,bar 对象的属性以及属性值的类型都是不确定的,但在运行到一定时候,TS 可以推断出 bar 有哪些属性以及属性值的类型。
以上是关于前端资讯TypeScript 2.7 发布的主要内容,如果未能解决你的问题,请参考以下文章