簡體   English   中英

排序javascript對象數組,打字稿錯誤

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

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