簡體   English   中英

typescript 錯誤 - “布爾值”不可分配給類型“數字”

[英]typescript error - 'boolean' is not assignable to type 'number'

有誰能夠幫我。

我正在嘗試對數組中的字符串進行排序

var someArray= ["3a445a_V1", "3", "2a33s454_V1", "1", "3_V2", "2s4a34s3_V2", "234343"];

const [record] = someArray.map(r => parseFloat(r.replace('_V','.'))).sort((a,b) => a < b);

console.log(record)
//it returns 3a445a.1

小提琴

在瀏覽器 console.log 中它工作正常,而不是在 typescript 中?

typescript 它給出以下錯誤錯誤:

error TS2345: Argument of type '(a: number, b: number) => boolean' is not 
assignable to parameter of type '(a: number, b: number) => number'.
      Type 'boolean' is not assignable to type 'number'.

任何的想法? 提前致謝

.sort((a,b) => a < b)不正確。 TypeScript 消息是正確的: sort回調應該返回一個數字,而不是一個布爾值。

相反: .sort((a,b) => a - b)-而不是< )。 b - a以另一種方式排序。 這是因為如果a出現在b之前, sort回調應該返回一個負數,如果它們的順序無關緊要,則返回0 ,如果b出現在a之前,則返回一個正數。 由於您似乎想要升序,因此a - b以便如果a小於b ,則返回負數等。 b - a進行降序排序。

你也可以使用.sort((a,b) => Number(a>b)) 這對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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