2017-10-20 52 views
0

是否有一個在構建時與運行時間的函數中強制參數的最佳實踐方式?例如,如果我具有以下功能:編譯時所需的功能參數檢查

function localize(strings, key, ...args) { 

     return ... 
    } 

和我人稱其爲這樣:

var result = localize('myKey') 

我沒有通過第一個參數(「字符串」)。我想拋出一個編譯錯誤,不要等到運行時纔會出錯。

+1

你是什麼意思? Javascript不是一種編譯語言,所以沒有可能發生錯誤的「構建時間」。除非你使用Typescript等東西? – CRice

+0

你說得很對,措辭不妙。我正在用es6構建一個反應應用程序。有沒有辦法強制正確數量的參數傳遞給函數,然後在運行時捕獲它?如果答案是否定的,這是不可能的,因爲它沒有編譯我接受。我只是想確保沒有一些好的方法來做到這一點,我不知道。謝謝。 – johnsontroye

回答

1

,因爲JavaScript不會被編譯,而動態類型,有沒有辦法強制執行你的榜樣合同,除了在運行時。

但是,您可以使用一個構建系統,如打字稿,流量等,對類型標註添加到您的代碼。這需要一個編譯步驟,但是在你的例子中你遇到的問題會在這個步驟中被兩個方法所捕獲。

沒有這個,就我所知,沒有辦法得到你想要的東西。您可以在vanilla中做的最好的JavaScript是驗證您在localize函數中給出的參數,並使用日誌/錯誤,以便在本地測試代碼時輕鬆識別問題。這裏最重要的一點是,如果沒有真正運行你的代碼,就沒有辦法在使用vanilla JS的示例中捕獲錯誤。