为什么我们需要TypeScript

ps:阅读文章前,先引用一段百度百科关于TypeScript的介绍,具体可以搜索TypeScript以及相关的CoffeeScript

TypeScript是一种由微软开发的自由和开源的编程语言。它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。

从1.0的发布开始,我已经对TypeScript项目关注了超过一年。它的理念吸引着我,但是正是因为具有了和大多数语言一样的习惯和特性,我还不能确定它最终是否可以发展起来。无论如何,最近的消息称TypeScript可能会被用于创建 AngularJS2.0,给我了相信TypeScript可以成为主流编程语言的可能以及值得去学习的信心。

我认为是时候开始一个小的项目(下面会贴出来)并且开始体验TypeScript的特性了。

当开始创建上面我说过的项目并且开始写这篇文章的时候,我浏览过大量的"介绍TypeScript"的文章。这里我不想写成和他们类似文章,这些文章有相应的定位,而且在事实上,我使用它们来开始我的TypeScript 旅程。无论如何,我想使用一个不同的视角——我想回到看这篇文章读者的位置,回答某些问题的答案和当我开始关注TypeScript项目的时候在我脑中的一些问题:

  1. 为什么你应该在下一个web或者移动项目中使用TypeScript ?
  2. 什么让TypeScript看起来如此美好——如何使你的工作更加简单并且使项目质量提高?
  3. 回到TypeScript本身,它是如何给javascript加上语法糖以及这些特性?

TypeScript可以比我自己创建更好的JavaScript

我承认这,但这并不感到羞愧。当我职业生涯还处在web 1.0的时代时,并不要求我很早就开始使用JavaScript 但是最后通过JQuery开始工作。TypeScript似乎就是适合连接鸿沟的两端。你仍然需要知道怎么去编写TypeScript以及使用,但是"compiler"就像用来操作重物做一些体力活,特别是当需要把类语法习惯转到到嵌套的函数,从类方法转到原型。在以前,我可能不得不学习怎么自己去做,但是到现在,我很高兴享受这些方便。我能写出就像我在其他语言中熟悉的对象和方法,并且最终得到原生的JavaScript。另一方面,我很认同 TypeScript代码相较于原生的JavaScript更加干净并且易于维护。下载我提供的示例文件并且编译,对比查看这两个文件。你认为哪一个更加利于维护?虽然JavaScript看起来非常干净,但是即使如此相对于TypeScript,你懂得。。

TypeScript可以很好的帮助组织代码

我想在每一个大型的web项目中用一种方式来描述JavaScript代码的状况,我学习到了一个词就是“大杂烩”。有一些写在页面文件中,有一些又在.js文件中。一些重复的代码遍布所有地方,通常情况下是因为没有一种良好的代码组织方式,在这种状态下工作是一种只有前端开发者才能理解的痛。
TypeScript 提供了一种创建模块的能力并且在下面几种情况中可能帮到你:

  1. 模块提供就像C#一样的命名空间。它们可以帮助你把相似的对象收集到一个集合,很好的避免因为其他对象以及在全局命名空间中重复声明引起的命名冲突。
  2. export关键字严格约束了模块外代码的访问,干净的定义了什么是需要暴露给使用者的接口还是私有属性,任何一个人都能制订相应规则。
  3. 一组类的集合允许一个模块能被分为多个文件为了更简便维护,可读性,重用(以及更多的情况)
    你可能注意到,我没有把我的代码放在单独的文件中。我决定不这样做是因为我想一次把所有的代码一次贴出来以供演示。但是如果它是一个更大的项目的一部分,我可能就会更具每一个类使用一个单独的文件了。

TypeScript可以帮助你分享和重用你的代码

这是第一部分和第二部分观点的结果。在显而易见的风险,如果你有高质量的代码,很好的组织,共享或重用在多个项目中很容易。例如,如果你要分割我下面的代码,让每一类在一个单独的.ts文件,它会很容易保持类作为一个公共库的一部分,但也可以只选择你想要一个特定的应用程序模块。也许你不需要做API调用,但你需要一个Timer 或 resultlog?那么TypeScript的这种结构和约定会更加方便。

当我向同事提到我按照这篇文章中的方式工作的时候,他的第一个问题是"如何在类似Angular的环境下工作?"换句话说,就是如何用新的TypeScript的方式分发和重用你目前存在的JavaScript代码。这个问题的答案是- 一个d.ts文件,或者一个库定义文件。这样允许TypeScript通过接口理解和同存在的Javascript代码库交互。在Angular的栗子中,你能使用GIT从仓库或者NuGet命令下载库定义文件。d.ts文件大多数的重要的JS库是有效的。对于你自己的JavaScript库,你将需要创建你自己的定义,或者直接使用TypeScript 重写代码库(例如Angular正在这样做一样)。


TypeScript当然提供了同样优秀的其他益处,但是上面说的这些内容真的打动我,并投入实际使用。我很喜欢使用这种方式,并且打算在以后的项目中使用它。事实上,目前我不打算在不使用TypeScript的情况下去创建一个重量级JavaScript项目。随着JavaScript在各种不同软件项目中被使用是一件司空见惯的事情,你必须能够写出高质量可重用的JavaScript代码,那么TypeScript可以帮你做到这一点。

这里链接了一个我的简单项目——这是一个API测试模块模拟一个我写了几个月的PowerShell脚本点击下载。包含TypeScript 模块代码之外, 还有一个html示例页面说明如何执行它。

版权声明

文章,以及附带的任何源码和文件,在Code Project Open License(CPOL)署名下。欢迎转载,但请保留文章版权声明以及译者、原文信息。

翻译

少个分号 http://www.printf.cn

原文地址

http://www.codeproject.com/Articles/989913/Exploring-TypeScript-and-What-Makes-It-Sweet