TypeScript系列 - 什么是TypeScript

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

接下来,我将给你们带来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的同窗就更可以明白这个道理。spa

 

强类型语言的优点在于静态类型检查,归纳来讲主要包括如下几点:


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

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

相关文章
相关标签/搜索