最新的 TypeScript 增加了泛型支持

  • Jeff Martin
  • 姚琪琳

2013 年 6 月 25 日

话题:JavaScript语言 & 开发

微软发布了TypeScript 0.9,该版本添加了一些新的特性,包括在前端使用泛型的能力。TypeScript微软为了让 JavaScript 更适合于大型应用程序开发所做的尝试,它结合了类型检查和静态代码分析。

新特性的亮点包括:

  • 泛型支持将这个流行的特性带到了 TypeScript 中,使其可以应用更好的类型检查和现代编程模式
  • 常量重载
  • 支持通过“export = ”来直接导入类
  • 枚举
  • 为语言的未来成长进行了重新设计。为更好地支持增量编译进行了改进,为支持更大型的代码库(超过 10 万行)进行了扩充,并修复了 CodePlex 上的 160 多个错误报告

Channel 9 上最近发布了一场有趣的圆桌会议,会议成员包括 TypeScript 小组的 Anders Heljsberg、Steve Lucco 和 Luke Hoban。这场讨论从另外一个角度来审视 0.9 的新特性。Hoban 发现 TypeScript 支持泛型后,即使程序员不直接使用泛型也能从中受益。这是因为它可以改善智能感知的性能并辅助错误检查。

在讨论时,Hejlsberg 举了下面这个例子来演示 0.8 到 0.9 的改变:

var a = [ “hello”, “world”, “….” ]
var n = a.map( s => s.length)
(where n is an array of numbers)
TypeScript 0.8:  s.   <- IntelliSense would show nothing
TypeScript 0.9:  s.   <- IntelliSense can show completions,
 including length

Hejlsberg 还指出 TypeScript 的泛型实现类似于 Java,而不是 C#。这部分原因是由于 TypeScript 的目标是产生可读的代码。因此像 async 这样的特性目前还没有开发,因为 JavaScript 当前的局限性意味着支持这些会产生过于复杂的代码。(他们举了IcedCoffeeScript这个例子,这就是小组在 TypeScript 的代码生成方法中所试图避免的结果。)如果 JavaScript 支持迭代器和生成器,那么 TypeScript 就可以支持 async 并产生人类可读的代码。未来 JavaScript 的更新也许会使这一切成为可能。

查看英文原文TypeScript Release Adds Generics

JavaScript语言 & 开发