凭借专利技术,JS++专注于编译时类型检查,但并不属于开源项目。软件供应商Onux公司意识到JavaScript中的类型安全问题,并由此开发出一种名为JS++的新语言,即JavaScript++。它能够在编译时中检查类型,而不再立足于运行时执行检查。
Onux公司CEO兼JS++缔造者Roger Poon表示,“Onux JS++编译器将多种类型统一为单一类型,即统一外部类型。通过提供完善的类型系统,各经过声明的类型(例如字符串)将永远不会出现错误,从而显著提高应用的开发可靠性”。
Poon解释称,“JS++目前已经发布早期预览版本,其能够编译为JavaScript并继承一切对JavaScript的支持能力,在编译时中进行错误检查使得JS++成为一种类似于Java的语言”。
这项技术并非开源,Poon表示该公司正在为其申请专利,这一防御手段主要是考虑到Facebook的Flow与谷歌的AtScript及SoundScript都在力争解决同类问题。开发者们无需刻意使用JS++,他指出。不过Onux公司的业务模式包括销售支持服务以及针对特定用例提供附加库,例如图表与图形。标准库以免费形式发布。
Poon认为JS++的闭源特性并不会吓跑开发者。事实上,他表示企业开发者们乐于使用JS++,因为其解决了他们日常工作中的一大痛点。“他们面对着数百万行JavaScript代码,其中大部分属于遗留代码,”他表示。“而其中最大的难题之一就是类型检查。”
JS++的竞争对手为微软的TypeScript,Poon表示后者的类型系统“并不完善”。JS++符合ECMAScript 3,特定底层JavaScript的一套较早版本。Poon指出,大多数开发者都在使用ES3或者ES5。
JavaScript开发者与教育家Eric Elliott则对Onux公司的宣传提出质疑,他表示目前还没有明确的证据表明完善的类型系统能够降低bug出现机率。“事实上,反倒有证据表明复杂的类型系统有可能带来更多bug,”他在最近的一篇文章中指出。“换言之,类型正确性并不能保证程序的正确性。”Elliott个人更推崇测试驱动型开发机制。
Elliott表示,“我并没用过JS++,但我没有理由相信庞大的JavaScript社区会向其张开怀抱。在此之前,很多项目都承诺为Web平台带来更出色的安全性,包括谷歌的SoundScript、谷歌的Dart语言、谷歌的Google Web Toolkit、微软的TypeScript、Facebook的Flow以及我自己开发的rtype项目等。”