微软推出了TypeScript版本3.0,它是JavaScript的开源扩展,包括对静态类型的支持。
对于那些喜欢TypeScript的人来说 - 一个不断增长的群体来判断语言 排名 - 或讨厌JavaScript - 这通常与缺乏静态类型有关 - 除了突破性的变化之外,这不是一个糟糕的方式来开始本周。
“TypeScript是JavaScript的扩展,旨在将静态类型引入现代JavaScript,”微软TypeScript语言项目经理Daniel Rosenwasser在博客文章中说。“TypeScript编译器读取TypeScript代码,其中包含类型声明和类型注释等内容,并发送清晰可读的JavaScript,并对这些构造进行转换和删除。”
然后,该代码可以在任何ECMAScript运行时中运行,例如浏览器或Node.js,他解释说。
要理解为什么这可能是值得的,请考虑JavaScript将允许您创建数字和文本变量并将它们添加到一起,从字面上将两者作为单个字符串连接起来。在强类型语言中,会出现错误消息,以鼓励程序员具体说明数字或字符串是否是所需结果。
支持数据类型的编程语言有助于使类型相关的错误更易于捕获,并且可以减少开发人员编写以验证其代码所需的单元测试数量,尽管处理数据类型需要更多的工作。
TypeScript是Angular前端框架的基础; 另一个领先的前端框架竞争者React可以与TypeScript或常规JavaScript一起使用。创建了React的Facebook也开发了Flow,这是一个用于JavaScript的开源静态类型检查器,可以作为TypeScript的替代品,用于那些关心类型检查的人。
TypeScript 3.0添加了一个名为“项目引用”的功能,允许开发人员通过添加到tsconfig.json
指向其他配置文件的文件的路径来指定一个TypeScript项目如何依赖另一个。
通过指定此类依赖项,可以将项目拆分为更易于管理的块,并可以加速构建。现在有一个--build
标志可以利用增量构建。
更新后的TypeScript也适用于JavaScript的rest参数语法,通过该语法可以将不同数量的参数作为参数传递给函数。在3.0版之前,TypeScript没有一种有效的方法来为这种操作分配数据类型。
现在,该语言将rest参数视为泛型,并将它们转换为元组,从而推断出所涉及的数据类型。根据Rosenwasser的说法,微软的TypeScript团队必须对元组类型做一些工作才能完成这项工作。
自上次TypeScript发布以来,错误消息也受到了一些关注,使它们更短更清晰。
有一种新的数据类型,称为unknown
,与另一种称为的全包数据类型不同any
。“不像any
,unknown
是分配到几乎没有别的不用类型的断言,” Rosenwasser解释。“你也无法访问任何属性unknown
,也无法调用/构建它们。”
该unknown
数据类型可能是在一个开发要确保进行类型检查或类型的断言使用了位置。它也恰好代表了一个重大变化 - 因为unknown
现在是一个保留字,以前使用它作为变量名的TypeScript代码将无法按预期执行。
3.0版的其他新增功能包括更广泛的JSX支持(JSX是React中使用的JavaScript扩展)和polyfill的新参考指令(使新API与旧运行时一起工作的库)。
“展望未来,我们预见会为类型系统和工具体验带来更多价值,完善现有的项目参考工作,并使TypeScript(语言和项目)更加平易近人,”Rosenwasser说。
领取专属 10元无门槛券
私享最新 技术干货