[英]sort array of javascript objects, typescript error
我有兩個問題,一個是圍繞我在角度傾斜轉換時注意到的行為而展開的……第二個是排序數組問題,它觸發了#1問題。
我要排序的數組看起來像這樣-將其稱為THINGS數組:
[{
label : string,
primary: boolean
}]
基本上,帶有“ primary”字段的標簽本質上是布爾值,因此值是true,false或null。 我想排序,因此布爾TRUE是第一個,布爾FALSE是后一個,而NULL是最后一個。 標簽在每個分組中按字母順序排列。
我只想做一個簡單的JS數組排序-不需要TS-
this.user.things.sort( function(a, b){ return b.primary > a.primary} );
所以我的編輯器向我警告TS錯誤...我忽略了,因為代碼起作用了。
[ts]類型'(a:ThingModel,b:ThingModel)=>布爾值的參數不能分配給類型'(a:ThingModel,b:ThingModel)=>數字'的參數。 “布爾”類型不能分配給“數字”類型。
我想我將從問題2開始。因為同樣的錯誤會在轉換時顯示
即使這是普通的JS-我也希望看不到波浪形的線條,以及在發送時出現紅色錯誤。
問題2:如何使此TS兼容?
然后,當我進行轉換時-即使我得到了錯誤-幾秒鍾后-我仍然收到“編譯成功”的消息-並且該站點運行正常。
問題1:有人可以在轉譯器上向我解釋-或向我指向文檔-哪些錯誤被認為是致命的-無啟動錯誤,哪些錯誤會像這樣,在其中會引發紅色錯誤-但完成編譯無論如何和代碼的作品。 這不僅僅是解決錯誤,更是一個教育問題。 但我想了解。
謝謝。
您需要返回number
而不是boolean
值
this.user.things.sort(function (a, b) {
return a.primary < b.primary ? 1 : a.primary > b.primary ? -1 : 0;
});
現在它將不會引發任何警告或錯誤。
您可以只返回第二個值和第一個值的差值。
使用比較運算符會像使用減運算符一樣進行隱式類型轉換。
var array = [false, true, true, false, false, true]; array.sort((a, b) => b - a); console.log(array);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.