[英]Angular 2 - how can I throw errors instead of casting to incompatible types
我想用傳遞為參數的字符串調用myMethod(number)時引發錯誤,而不強制myMethod執行檢查。
constructor { myMethod( <number> <any> "65"); //should be a runtime error, but isn't } myMethod(n: number) { console.log(typeof n); //"string" console.log(n + 1); //runtime error }
因為我們的應用程序是從Web上的json檢索數據的,所以有時開發人員會更改類型,並且我們必須調試整個數據管理管道,而沒有任何跡象表明字符串會偽裝成數字。
我希望它至少在將類型強制轉換為無效類型時記錄日志,而無需為從Web檢索到的每種對象類型分別實現。
所有無法靜態鍵入的數據都應在運行時聲明。
這可以通過樣板if..throw
語句,斷言庫或從數據傳輸對象(JSON)實例化自驗證類來完成。
有時開發人員會更改類型,並且我們必須調試整個數據管理管道,而沒有跡象表明字符串會偽裝成數字。
這個問題可以通過測試覆蓋率來解決。
您可以使用throw關鍵字拋出任何您喜歡的錯誤:
if (isNaN(n)) {
throw "Parameter is not a number!";
}
docs: https : //developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/throw
但是使用Web服務時,最好的選擇是始終在檢索到內容后立即對其進行強類型輸入,以便您始終知道要使用的內容。 這是一筆相當可觀的事,總是可以帶來回報。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.