转自:TypeScript与Haxe:两种截然不同的JS转译工具横向对比

JavaScript无疑是当今最火爆的编程语言之一,它的崛起要归功于AJAX、Node.js的出现以及时下各种MVC框架的流行。但作为一门在十天之内创建出来的语言,JS本身存在着一些不完善之处、以及容易令人疑惑的地方,例如不支持强类型以及new关键字的用法。尤其与当前主流的面向对象语言以及动态语言相比,其不足之处显得尤为突出。

为了克服JS语言中的缺陷,让更多的人能够编写出优秀的代码,市面上出现了大量能够将其它编程语言转译为JS的工具。其中较知名的有CoffeeScript、Dart、GWT、Script#,以及本文的主角TypeScript与Haxe。

TypeScript是这一领域中的新贵,由微软于2012年发布。近期发布到1.5版,加入了大量ES6的特性。TypeScript被设计为JS的一个超集,因此现有的JS都是合法的TypeScript代码。这门语言也得到了Angular团队以及Telerik的支持。

作为这一领域中的老前辈,Haxe从2006年起就提供了转译为JS的功能。与TypeScript类似,Haxe也提供了一套类似于JS的语法、静态类型系统以及模块。除了JS之外,Haxe还能够提供编译为Flash、PHP、C++等语言的功能。

来自Haxe的员工Andy Li最近在博客中对TypeScript与Haxe进行了一次全面的比较,包括语法、底层语义、类型系统、以及组织和生成代码的方式。为开发者如何在这两种工具间进行选择提供了一个不错的参考。

在文章的最后,Andy对他的观点进行了一番总结。他认为这两门语言具有一定的相似性,但在设计思想上有许多不同之处。TypeScript总体更接近原生的JS,对于JS开发者来说更容易上手。而非JS开发者或许会喜欢Haxe,它更接近于现代的静态语言,同时引入了许多函数式编程的概念,进一步加强了它的语法特性。

Andy个人更偏向于使用Haxe,除了因为他本身就是Haxe Foundation的一员之外,还因为Haxe能够提供编译为其它语言的功能,而这一点是TypeScript所不具备的,因为后者设计时就是为了编译为JS这个目的而生。

TypeScript与Haxe:两种截然不同的JS转译工具横向对比相关推荐

  1. 固定编辑框输入上限和下限_两种截然不同的汉字输入场景

    汉字输入法有两种截然不同的应用场景,一种是大众应用,另一种是专业应用.所谓大众应用,是指一般的人使用汉字输入法来满足日常的工作和生活需要,比如写作.聊天等.所谓专业应用,是指打字员.参与打字比赛的人等 ...

  2. NanShan HTML 5与Flex是两种截然不同的技术解决方案

    原文:NanShan HTML 5与Flex是两种截然不同的技术解决方案 2015年即时通讯领域,NanShan HTML 5与Flex是两种截然不同的技术解决方案.HTML 5的出现让Flex更加专 ...

  3. 防止email被抓取的两种方法(js和css)

    现在很多无聊人士都用自己的spider在网上到处抓取email, 如果你的页面上写了自己的email,那么不多久就会收到很多垃圾邮件. 有很多方法可以避免被抓取,现在很多人都把@换成#,不过估计很多蜘 ...

  4. 股市和期市是两种截然不同的市场机制 ——兼与徐小明先生商榷

    陈培雄:股市和期市是两种市场机制 陈培雄 偶然机会朋友推荐我拜读了徐小明先生<探寻股市下跌的真正原因>系列文章. 以下几个原因让我写下这篇文章, 一是为徐小明先生精神和勇气感动: 二是本人 ...

  5. 两种方式实现js, ajax跨域

    2019独角兽企业重金招聘Python工程师标准>>> 做客户端软件或手机应用,没有域,所以要解决跨域通信. 第一种方式就是jsonp 这个大家可以查一下,这里直接贴实例 html代 ...

  6. 看两种截然不同的设计理念:分布式文件系统支持大和小文件的思考

    为何Google GFS设计成对大文件友好,而像腾讯的TFS(Tencent File System)和淘宝的TFS(Taobao File System)却设计成对小文件友好了? 这一点非常好理解, ...

  7. 域名解析、域名空间绑定,两种截然不同概念

    动态域名为何需要解析?其实,域名解析是网站维护的基本环节.对于非互联网专业人士来说,动态域名解析是难题.那么,到底动态域名如何解析成功呢?这里我们就来了解一下域名解析知识. 首先要注册域名,购买虚拟主 ...

  8. 两种常用的js数组转字符串方法

    一.toString() js中的toStrig()方法能把数组转换为字符串,并且元素之间用 ',' 隔开 例如: let arr =['喵喵','火花','水蓝蓝']let str=arr.toSt ...

  9. Mybatis的批量插入数据库的两种方法及代码自动生成工具的使用方法

    文章目录 常规批量插入.(通过foreach,生成很长的SQL) ExecutorType.BATCH方式执行批量操作 在这里简单介绍一下,自动生成工具的使用方法 常规批量插入.(通过foreach, ...

最新文章

  1. Docker网络详解——原理篇
  2. Zookeeper分布式一致性原理(七):Curator客户端
  3. [architecture]-AXI/APB/AHB/ACE的介绍
  4. 目前最全的存储形式总结
  5. Netflix CEO:入华谈判进展顺利 或很快获牌照
  6. 2018/7/9-纪中某B组题【jzoj1503,jzoj1158,jzoj1161】
  7. php 导出txt 缩进,indent - 缩进文本
  8. python 爬取贝壳网小区名称_Python爬虫实战:爬取贝壳网二手房40000条数据
  9. sed mysql配置文件_shell解析my.cnf配置文件
  10. 人大提出新模型,将Two Stage的Video Paragraph Captioning变成One Stage,性能却没下降...
  11. div iframe html5,深入理解iframe
  12. 基于VMware vSphere的虚拟化平台,内存分配是如何实现的?
  13. 通过MVC模式将Web视图和逻辑代码分离
  14. html的下拉刷新页面,html下拉刷新上拉加载Refresher3.0
  15. c语言burg算法,用Burg算法提升空间调制傅里叶光谱仪分辨率与定阶方法
  16. Python被誉为神奇的“胶水语言”,到底神奇在哪?
  17. 数仓知识05:事实表和维度表的概念
  18. python制作圆形按钮_圆形按钮tkinter python
  19. 图表框架html,推荐14个实用的JavaScript图表(JS图表)图形绘制工具
  20. 世界名牌CD机解码芯片大全

热门文章

  1. NOI 国家集训队论文集
  2. 中国煤炭机械行业十四五需求规模与竞争形势分析报告2022版
  3. Eclipse java 字体的设置(最佳字体推荐)
  4. python同时运行多个程序_如何同时运行两个python循环?
  5. Linux安装telnet服务、telnet 命令用法
  6. 湛蓝代码自动生成工具有感
  7. STM32F103 基本定时器 (P2MDA-KM4)
  8. el-table 树形表格 自定义展开图标_Icon Slate for mac(图标制作工具) v4.5.0
  9. JavaWeb 项目 --- 博客系统(基于模板引擎)
  10. windows pipe