TypeScript系列

看了很多关于TypeScript的文章,总体说来没有很好的,一个系统的学习TypeScript的资源。

接下来,我将给大家带来TypeScript的系列,让你和我一样,一步一步的学习TypeScript,并且学以致用。

 

什么是TypeScript呢

在TypeScript的官方网站上面有这样的描述:

TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.
    Any browser. Any host. Any OS. Open source.

什么意思呢?翻译过来就是说TypeScript是JavaScript类型的超集,并且可以编译为纯JavaScript。

在任何浏览器,集群(服务器),操作系统上面都可以运行,而且还开源。

我们怎样解读TypeScript呢

首先我们要知道TypeScript的爹是微软。开发工具通常使用VSC(Visual Studio Code)。

官方网站: https://www.typescriptlang.org/index.html

TypeScript 是 JavaScript 的强类型版本。然后在编译期去掉类型和特有语法,生成纯粹的 JavaScript 代码。由于最终在浏览器中运行的仍然是 JavaScript,所以 TypeScript 并不依赖于浏览器的支持,也并不会带来兼容性问题。


TypeScript 是 JavaScript 的超集,这意味着他支持所有的 JavaScript 语法。并在此之上对 JavaScript 添加了一些扩展,如 class / interface / module 等。这样会大大提升代码的可阅读性。使用过Java的同学就更能够明白这个道理。

强类型语言的优势在于静态类型检查,概括来说主要包括以下几点:


1) 静态类型检查

  静态类型检查可以避免很多不必要的错误, 不用在调试的时候才发现问题 。

2) IDE 智能提示

  在 TypeScript 这一类语言之前, JavaScript 的智能提示基本完全依赖 IDE 提供的猜测 (在猜测的质量上, Visual Studio 和 brackets 是我见过的最好的)。 局限性就是, 这种猜测可能并不正确, 并且也缺乏更多的辅助信息, 所以要正确使用一个类库, 得不断地在文档和 IDE 之间切换, 影响心情和效率。 而 TypeScript 不仅自己写的类库有丰富的类型信息, 也可以对其他纯 JS 项目进行类型标注 (DefinitelyTyped), 便于使用者直接在 IDE 中浏览 API, 效率大增。 而对于自己的或者团队的代码, 好处也很明显。 团队的代码自己不一定能把各种接口记得滚瓜烂熟, 自己的代码如果规模大了也很难记全, 这个时候再去翻源文件。。。


3) 代码重构

  且不说我这种经常纠结变量名的会时不时看某个变量名不顺眼, 改之的情况。 有时候的确需要修改一些变量/属性/方法名, 牵涉到属性和方法的时候, 很多改动是跨文件的, 不像普通变量可以简单定位 scope, 属性方法名的重命名对于 JS 来说异常痛苦, 一方面是修改本身就不方便, 另一方面是改了还不确定该改的是不是改了, 不该改的是不是也改了。 而 TypeScript 的静态类型系统就可以较为完美的解决这个问题 (这个地方还牵涉到一些最佳实践, 就暂不深入了)。


4) 可读性

对于阅读代码的人来讲, 各种便利的类型一目了然, 更容易明白作者的意图。


TypeScript 虽然是强类型语言,但是如果对象被声明为了 any 类型,就会忽略所有的类型检查。这种灵活的结构保证了他可以在保证整体有强类型检查优势的同时,在一些细节问题上保持弱类型的灵活。


TypeScript 本身是开源的,这意味着开发者可以自由修改其源代码,同时 TypeScript 的架构设计也很优秀,提供了充分的 API 接口方便开发者进行进一步扩展。顺便说一下,TypeScript 编译器本身是用 TypeScript 开发的。构建流程是先用旧版本的 TypeScirptCompiler。js 将新版本的 TypeScript Language 的 TypeScript源代码编译成新的 TypeScriptCompiler。js,听起来很厉害的样子。


由于其开源性,通过 TypeScript Compiler API,开发者可以自己实现编译器(比如添加增量编译和自动编译,大幅提升编译速度),自定义语法检查,以及自定义输出结构等。 由于编译器核心灵活的结构,开发者只需要简单的添加一些代码,就可以在 IDE 中支持 TypeScript 的诸多特性。


白鹭引擎是基于 TypeScript 的开源 HTML5 游戏引擎。白鹭引擎的后续版本会利用这些特性不断完善引擎自身。举例,我们的 IDE Egret Wing 就利用了 TypeScript Service API 实现了了代码智能提示等功能。文档生成工具也是通过扩展 TypeScript Compiler API 实现的。

总结:

我认为 TypeScript 是一项非常值得学习的新技术,由于他是 JavaScript 的超集,对 JavaScript 开发者来说入门门槛很低(相对于 Dart / CoffeeScript 等其他 JavaScript 变种来说 )。


如果一定要找出几个不用 TypeScript的原因。我能想到以下情况:

  1. 需要在 HTML 里大量嵌入 JavaScript 代码,而非 HTML 和 JavaScript 分离。
  2. 熟练运用原型继承,不喜欢 class 关键字
  3. 项目中大量依赖了第三方 JavaScript 类库,并且这些类库没有 .d.ts 文件
  4. “微软雅黑”

参考:

https://www.zhihu.com/question/21879449

https://www.zhihu.com/question/28016252/answer/39056940

========================================================

More reading,and english is important.

I'm Hongten

 

大哥哥大姐姐,觉得有用打赏点哦!多多少少没关系,一分也是对我的支持和鼓励。谢谢。
Hongten博客排名在100名以内。粉丝过千。
Hongten出品,必是精品。

E | hongtenzone@foxmail.com  B | http://www.cnblogs.com/hongten

========================================================

原文地址:https://www.cnblogs.com/hongten/p/hongten_typescript_01.html