關于對hack語言類型檢查器贊同的觀點,聽起來和對靜态類型語言贊同的觀點非常接近。類型檢查器能夠在不運作程式體本身的情況下,對錯誤進行查找和檢查。是以在測試過程中,即使不運作代碼,它也能夠捕獲問題所在。正是因為不需要去執行程式體,是以能夠在程式開發的早期及時地捕獲錯誤,這将大幅度地節約開發時間。靜态分析的能力能夠確定在子產品邊界沒有破損,這使代碼重構變得更加簡單。
在最經典的争論中,所謂的缺點總是伴随着一些能夠拖慢開發速度的特征。在能夠正式運作程式之前,你不得不花費時間等待程式體進行編譯。這依賴于程式所使用的程式設計語言及程式體本身的大小。同時,你必須在程式體内部給出所有變量的類型,這将使你的程式體更加冗長并且難以維護。
然而這些诟病在hack語言中并不存在,這基于如下兩點原因。第一點,類型檢查器被設計成及時回報的,即使在非常大的代碼庫内,也可以做到及時回報。它使用的是“用戶端/服務端”模型:類型檢查的服務端在背景運作,并且時刻在監控檔案系統的變化。當你編輯一個檔案時,服務端會及時更新它在記憶體中對你的代碼庫的分析。在你準備運作程式的時候,分析已經完成了。用戶端僅僅是簡單地查詢服務端,并且幾乎瞬時展示分析的結果。這個“及時回報”的功能很容易與各種程式編輯器和ide合并。
第二點,hack的變量類型标注是設計成漸進式的。你可以按自己的心願使用這項功能。類型标注過的代碼可以和沒有類型标注過hack代碼或者php代碼無縫對接。除此之外,你如果不标注本地變量類型,類型檢查器會從它的上下文中推斷出相關的類型。