ECMAScript什么时候能像TypeScript一样好用呢

前几天,TypeScript发布3.7版本,增加了很多好用的功能.其中我最喜欢的是可选链操作符(?.),当时第一感觉就是这简直太方便了..

image-2803

另外想到的是ECMAScript也有这个功能,查了一下MDN,确实有(https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/%E5%8F%AF%E9%80%89%E9%93%BE).但是文档里面有一段话扎心了…

警告:截至2019年8月,没有本地环境实现了这个功能。如果你使用Babel,你可以使用 this plugin 来模拟可选链。

{{EmbedInteractiveExample(“pages/js/expressions-optionalchainingoperator.html”)}}

也就是说…特性是有,但没有被支持,在文档的下方也确实显示了目前没有任何浏览器支持该特性.

于是,从ECMAScript换到TypeScript还是有必要,毕竟新版Vue不也换成用TypeScript编写了吗?

JavaScript: TypeScript 3.7发布

关于TypeScript

TypeScript是一种由微软开发的自由和开源的编程语言。它是JavaScript的一个严格超集,并添加了可选的静态类型和使用看起来像基于类的面向对象编程语法操作 Prototype。C#的首席架构师以及Delphi和Turbo Pascal的创始人安德斯·海尔斯伯格参与了TypeScript的开发。[4][5][6][7]

TypeScript设计目标是开发大型应用,然后转译成JavaScript。[8]由于TypeScript是JavaScript的严格超集,任何现有的JavaScript程序都是合法的TypeScript程序。

TypeScript支持为现存JavaScript库添加类型信息的定义文件,方便其他程序像使用静态类型的值一样使用现有库中的值。当前有第三方提供常用库如jQuery、MongoDB、Node.js和D3.js的定义文件。

TypeScript编译器本身也是用TypeScript编写,并被转译为JavaScript,以Apache License 2发布。 — 维基百科

image-2789

关于TypeScript中文网的提示

www.tslang.cn 是TypeScript中文网,上面的文档有些滞后,目前仍停留在3.1版本.不过作为入门学习还是可以的,但建议参考官网最新文档.

发布3.7版本

主要更新内容:

  1. Optional Chaining
  2. Nullish Coalescing
  3. Assertion Functions
  4. Better Support for never-Returning Functions
  5. (More) Recursive Type Aliases
  6. –declaration and –allowJs
  7. The useDefineForClassFields Flag and The declare Property Modifier
  8. Build-Free Editing with Project References
  9. Uncalled Function Checks
  10. // @ts-nocheck in TypeScript Files
  11. Semicolon Formatter Option

详细更新内容: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html

Optional Chaining

这是个很有用的功能,可以在编码时减少判断.

示例:

// 之前
if (foo && foo.bar && foo.bar.baz) {
    // ...
}


// 现在
if (foo?.bar?.baz) {
    // ...
}

// 语法是: ?. , 可作用于:


obj?.prop // 静态属性访问
obj?.[expr] // 动态访问
func?.(...args) // 函数或方法调用

其实在JavaScript官方中也定义了类似的,但目前没有任何浏览器支持.相关文档可以参考: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/%E5%8F%AF%E9%80%89%E9%93%BE

其余特性请参考官方更新日志.