TypeScript 和 JavaScript 的区别
2017-08-23 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
作为编程语言的TypeScript
关于TypeScript,首先要认识的一点就是:它是Anders Hejlsberg的作品。Anders是第一流的编程语言设计师,也是第一流的编译器实现者。作为Object Pascal和C#之父,Anders这次仍然采用了此前的做法:他设计了一种新的语言,并实现了这种语言的编译器,来改进一种已有的语言。但这次又和此前有所不同,此前无论是Object Pascal还是C#,编译的目标代码都是机器码,而TypeScript的目标代码则是JavaScript。
当然,如果把浏览器看作是虚拟机,而JavaScript看作是在这种虚拟机上运行的目标代码也无不可。总而言之,使用TypeScript这种语言撰写的源代码需要经过TypeScript编译器的编译,而产生的目标代码是标准的JavaScript。但这还不是TypeScript在语言设计层面上的特别之处,特别之处有两点。
TypeScript支持on-the-fly编译,即写一句TypeScript就可以立即得到对应的JavaScript代码,这个特性和CoffeeScript类似。但它比CoffeeScript支持更强的上下文推导,不需要完整的语句写完,就可以生成对应的、不完整的JavaScript代码。
TypeScript是JavaScript的超集(superset),“任何合法的JavaScript都是合法的TypeScript。”这种设计很明显是借鉴了C++对于C做扩充时采用的做法,它兼容已有的JavaScript代码的决定给很多JavaScript程序员向TypeScript转型时铺就坚实的第一步——他们可以从自己已有的代码出发,通过一点一点的改动来体会到TypeScript带来的好处,同时,时刻保留说“这样就够了”,然后停止的权利。直到掌握了比较全面的TypeScript技术以后,才从一开始就采用TypeScript来撰写代码,而只取用编译结果。实际上,“任何合法的JavaScript都是合法的TypeScript”这种说法并不准确,准确的说法是“任何合法的ECMAScript 6都是合法的TypeScript”。当然,ECMAScript 6还是一个正在修订的语言规范,而TypeScript在现阶段生成的任何目标代码,涉及可能会引起ECMAScript 6的新特性的,都采用了向下兼容的ECMAScript 5规范作为准则。但对于各个浏览器自行对JavaScript做的那部分扩充,TypeScript不保证予以支持。
TypeScript特性简介
前面已说过,TypeScript的设计目标是作为JavaScript或者说ECMAScript 6的超集。换句话说,如同C++的初始目标是作为“更好的C”一样,TypeScript也可以看作是“更好的JavaScript”,那么好在哪里呢?其实用C++和C的关系来做类比,还是很恰当的。TypeScript充分利用了JavaScript原有的对象模型并在此基础上做了扩充,添加了较为严格的类型检查机制,添加了模块支持和API导出的能力。比起JavaScript,TypeScript提供了更多在语言层面上的支持,使得程序员能够以更加标准化的语法来表达语义上的约束,从而降低了程序出错的机率;TypeScript也使得代码组织和复用变得更加有序,使得开发大型Web应用有了一套标准方法。
关于TypeScript,首先要认识的一点就是:它是Anders Hejlsberg的作品。Anders是第一流的编程语言设计师,也是第一流的编译器实现者。作为Object Pascal和C#之父,Anders这次仍然采用了此前的做法:他设计了一种新的语言,并实现了这种语言的编译器,来改进一种已有的语言。但这次又和此前有所不同,此前无论是Object Pascal还是C#,编译的目标代码都是机器码,而TypeScript的目标代码则是JavaScript。
当然,如果把浏览器看作是虚拟机,而JavaScript看作是在这种虚拟机上运行的目标代码也无不可。总而言之,使用TypeScript这种语言撰写的源代码需要经过TypeScript编译器的编译,而产生的目标代码是标准的JavaScript。但这还不是TypeScript在语言设计层面上的特别之处,特别之处有两点。
TypeScript支持on-the-fly编译,即写一句TypeScript就可以立即得到对应的JavaScript代码,这个特性和CoffeeScript类似。但它比CoffeeScript支持更强的上下文推导,不需要完整的语句写完,就可以生成对应的、不完整的JavaScript代码。
TypeScript是JavaScript的超集(superset),“任何合法的JavaScript都是合法的TypeScript。”这种设计很明显是借鉴了C++对于C做扩充时采用的做法,它兼容已有的JavaScript代码的决定给很多JavaScript程序员向TypeScript转型时铺就坚实的第一步——他们可以从自己已有的代码出发,通过一点一点的改动来体会到TypeScript带来的好处,同时,时刻保留说“这样就够了”,然后停止的权利。直到掌握了比较全面的TypeScript技术以后,才从一开始就采用TypeScript来撰写代码,而只取用编译结果。实际上,“任何合法的JavaScript都是合法的TypeScript”这种说法并不准确,准确的说法是“任何合法的ECMAScript 6都是合法的TypeScript”。当然,ECMAScript 6还是一个正在修订的语言规范,而TypeScript在现阶段生成的任何目标代码,涉及可能会引起ECMAScript 6的新特性的,都采用了向下兼容的ECMAScript 5规范作为准则。但对于各个浏览器自行对JavaScript做的那部分扩充,TypeScript不保证予以支持。
TypeScript特性简介
前面已说过,TypeScript的设计目标是作为JavaScript或者说ECMAScript 6的超集。换句话说,如同C++的初始目标是作为“更好的C”一样,TypeScript也可以看作是“更好的JavaScript”,那么好在哪里呢?其实用C++和C的关系来做类比,还是很恰当的。TypeScript充分利用了JavaScript原有的对象模型并在此基础上做了扩充,添加了较为严格的类型检查机制,添加了模块支持和API导出的能力。比起JavaScript,TypeScript提供了更多在语言层面上的支持,使得程序员能够以更加标准化的语法来表达语义上的约束,从而降低了程序出错的机率;TypeScript也使得代码组织和复用变得更加有序,使得开发大型Web应用有了一套标准方法。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询