簡體   English   中英

Angular 2-如何拋出錯誤而不是強制轉換為不兼容的類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM