新型編譯器助JavaScript搞定類型難題
譯文憑借專利技術,JS++專注于編譯時類型檢查,但并不屬于開源項目。軟件供應商Onux公司意識到JavaScript中的類型安全問題,并由此開發(fā)出一種名為JS++的新語言,即JavaScript++。它能夠在編譯時中檢查類型,而不再立足于運行時執(zhí)行檢查。
Onux公司CEO兼JS++***Roger Poon表示,“Onux JS++編譯器將多種類型統(tǒng)一為單一類型,即統(tǒng)一外部類型。通過提供完善的類型系統(tǒng),各經過聲明的類型(例如字符串)將永遠不會出現(xiàn)錯誤,從而顯著提高應用的開發(fā)可靠性”。
Poon解釋稱,“JS++目前已經發(fā)布早期預覽版本,其能夠編譯為JavaScript并繼承一切對JavaScript的支持能力,在編譯時中進行錯誤檢查使得JS++成為一種類似于Java的語言”。
這項技術并非開源,Poon表示該公司正在為其申請專利,這一防御手段主要是考慮到Facebook的Flow與谷歌的AtScript及SoundScript都在力爭解決同類問題。開發(fā)者們無需刻意使用JS++,他指出。不過Onux公司的業(yè)務模式包括銷售支持服務以及針對特定用例提供附加庫,例如圖表與圖形。標準庫以免費形式發(fā)布。
Poon認為JS++的閉源特性并不會嚇跑開發(fā)者。事實上,他表示企業(yè)開發(fā)者們樂于使用JS++,因為其解決了他們日常工作中的一大痛點。“他們面對著數(shù)百萬行JavaScript代碼,其中大部分屬于遺留代碼,”他表示。“而其中***的難題之一就是類型檢查。”
JS++的競爭對手為微軟的TypeScript,Poon表示后者的類型系統(tǒng)“并不完善”。JS++符合ECMAScript 3,特定底層JavaScript的一套較早版本。Poon指出,大多數(shù)開發(fā)者都在使用ES3或者ES5。
JavaScript開發(fā)者與教育家Eric Elliott則對Onux公司的宣傳提出質疑,他表示目前還沒有明確的證據表明完善的類型系統(tǒng)能夠降低bug出現(xiàn)機率。“事實上,反倒有證據表明復雜的類型系統(tǒng)有可能帶來更多bug,”他在最近的一篇文章中指出。“換言之,類型正確性并不能保證程序的正確性。”Elliott個人更推崇測試驅動型開發(fā)機制。
Elliott表示,“我并沒用過JS++,但我沒有理由相信龐大的JavaScript社區(qū)會向其張開懷抱。在此之前,很多項目都承諾為Web平臺帶來更出色的安全性,包括谷歌的SoundScript、谷歌的Dart語言、谷歌的Google Web Toolkit、微軟的TypeScript、Facebook的Flow以及我自己開發(fā)的rtype項目等。”