写点什么

微软发布 TypeScript 2.0 RC 版本

2016 年 9 月 08 日

微软发布了 TypeScript 2.0 的 RC 版本,包含了 tagged union 功能以及对 globs 的支持。

在微软博客的声明中,TypeScript 的项目主管 Daniel Rosenwasser 这样说到:

“这个 RC 版本能够帮助我们了解完整的 2.0 版本会是什么样子,我们正在寻求广泛的反馈,使其更加稳定,从而让 2.0 成为一个可靠的发布版本。整体而言,对于通常的使用来说,这个 RC 版本足够稳定,从这个时间点开始,我们不会再添加重要的新特性了。”

其实,从 2.0 beta 版本发布到现在,有很多新内容添加了进来。

在 TypeScript 的发布候选版本中,最重要的更新之一就是 tagged union。

Rosenwasser 说到,“借助 tagged union 功能,我们能够按照现在编写 JavaScript 的模式,更加容易地实现类型安全性”。在这个领域,JavaScript 可能已经落后于像 F#、Swift 和 Rust 这样的语言,通过 tagged union,TypeScript 能够基于kind域来识别类型,如下所示:

复制代码
function getArea(shape: Shape) {
switch (shape.kind) {
case "circle":
// 从'Shape'转换为'Circle'
let c = shape as Circle;
return Math.PI * c.radius ** 2;
case "square":
// 从'Shape'转换为'Square'
let sq = shape as Square;
return sq.sideLength ** 2;
}
}

该特性是针对 TypeScript 1.8 的功能增强,在 1.8 版本中需要对shape中的每个类型进行类型断言。(以上的样例是针对 1.8 版本的,针对 2.0 版本的完整样例可以参考微软的发布声明。——译注)

这个发布版本还支持globs,进一步扩展了TypeScript 1.6 的 exclude域。TypeScript 2.0 允许开发人员为路径编写通配符,Rossenwasser 说这可以是任意粒度的,它们可以用在新增的include域上,也可以用在已有的exclude域中,如下所示:

复制代码
{
"include": [
"./src/**/*.ts"
],
"exclude": [
"./src/tests/**"
]
}

TypeScript 2.0 发布候选版本需要使用 Microsoft Visual Studio 2015 Update 3 ,这个版本解决了多项有较大影响的 bug,包括“在调试 Visual C++ 或 CLI 代码时,提升了调试的稳定性”,另外,还解决了“在 std::min/std::max 这样代码调用函数中,针对浮点值使用时,可能会出现的错误编译(miscompilation)问题。”

开发社区对这个 RC 版本总体上是很乐观的。在 Reddit 上,Vheissu_ 这样说到,“对 TypeScript 而言,这是一个巨大的飞跃。现在,已经不可能回到简单原始的 ECMAScript 上了。”

用户 cspotcode问了这样一个问题

lib.dom.d.tsNode.nodeType域会升级到 discriminated unions 吗?这会不会让当前的类型变得太混乱?看上去,如果Node.nodeType依然是一个number的话,那么Element.nodeType就不能是数字的字面量,因为这会违背Element扩展Node这一前提。Node应该需要重写,使其成为一个 union 类型,而不是接口。

Rossenwasser 这样进行了答复

这是完全有可能的——你可以将所有返回 Node 的地方都想象为返回新的类型,这个新类型代表了一个 union。目前,对我来言,扩展 Node 的语义是什么尚不清晰,但是如果你有什么想法的话,我们会认真倾听!你尽可以对此开一个 issue。

当问及开发人员何时可以等到 2.0 的最终版时,Rossenwasser 大致估算为“几周之后”,但是他又说不要严格以此为准。

查看英文原文 Microsoft Releases TypeScript 2.0 RC

2016 年 9 月 08 日 19:001417

评论

发布
暂无评论
发现更多内容

对微服务架构的理解

朱月俊

对中台思维的思考

朱月俊

Eureka常见问题汇总及注意事项

xcbeyond

Java SpringCloud Eureka 服务注册与发现 常见问题

面试官:您能说说序列化和反序列化吗?是怎么实现的?什么场景下需要它?

xcbeyond

Java 面试题 序列化

OAuth 2.0

陈皮

微服务与DDD

走过路过飞过

练习 10-1

闷骚程序员

架构师训练营 Week 10 作业

Wancho

让我们慢慢地成长

姜海天

个人成长

架构师课程第十周总结

dongge

架构师训练营Week10作业

Frank Zeng

week 10 总结

a晖

微服务&DDD

极客大学架构师训练营

架构师第十周

Tulane

架构训练营第十周感悟

张锐

Dubbo微服务调用过程时序图

2流程序员

堆栈神奇应用之CXO让我做一个计算器!!

架构师修行之路

数据结构 堆栈

架构师训练营Week10学习总结

Frank Zeng

hive拉链表优化·百亿量级数据支持准实时更新

誓约·追光者

hive 实时数仓 海量数据库的设计与实践

极客大学架构师训练营 --第10周

李朋

来自面试官的技术面试题

xcbeyond

Java 数据库 自我介绍 面试经验

【架构师训练营】第 10 周作业

花生无翼

week10 作业

雪涛公子

【架构师训练营】第 10 周总结

花生无翼

week 10作业

a晖

Dubbo微服务调用时序图及微服务架构个人见解

潜默闻雨

【架构师训练营 - week10 -1】作业

早睡早起

架构师训练营第十周作业

吴吴

week10 总结

雪涛公子

微服务&DDD&中台

dony.zhang

中台 微服务 DDD

芯片破壁者(十二.上):“大头儿子”模式下的韩国半导体

脑极体

微软发布TypeScript 2.0 RC版本-InfoQ