javascript - typescript 錯誤 - 'boolean' 無法指定給類型 '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
JFIDDLE
在瀏覽器的 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'.
有任何想法嗎?提前感謝
答案#1
.sort((a,b) => a < b) 是不正確的。TypeScript 的訊息是對的:sort 的回呼函式應該回傳一個 數字,而不是布林值。
取而代之:.sort((a,b) => a - b)(使用 - 而不是 <)。或者使用 b - a 來做相反排序。這是因為 sort 回呼函數應該在 a 排在 b 前時返回負數,如果順序無關緊要則返回 0,如果 b 排在 a 前則返回正數。由於你似乎想要升序,所以使用 a - b,這樣當 a 小於 b 時,會返回負數,依此類推。b - a 則是做降序排序。