【发布时间】:2022-12-19 14:29:55
【问题描述】:
我有以下表达式过滤数组中包含的单词,然后根据以搜索到的表达式开头的单词对它们进行排序,然后按最短到最长的顺序对它们进行排序。
切换到打字稿后,我有以下 2 个错误:
The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.ts(2362)-
The right-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.ts(2363)
我尝试了使用valueOf()、toString() 和as string 在网上找到的解决方案,但它们似乎不起作用。关于如何解决这个问题的任何帮助?
表达:
let wordsFiltered = wordList
.filter(x => shoetest.simplify(x).toLowerCase().includes(shoetest.simplify(searchTerm).toLowerCase()))
.sort((a, b) => b.startsWith(searchTerm) - a.startsWith(searchTerm))
.sort((a, b) => a.length - b.length);
【问题讨论】:
-
当您对非任何、数字或枚举类型的值进行算术运算时,会出现错误“算术运算的左侧必须是类型‘any’、‘number’、‘bigint’或枚举类型” ,例如一个约会。要解决错误,请将值转换为数字。
-
startsWith return
trueare you sure you want to type cast with subtracting . -
@MohitSharma 谢谢。您对我如何最好地实现这一目标有何建议?
-
你可以在它前面加上
++a.startsWith() -
此外,您正在链接两个
sort。那将只使用最终的排序逻辑,所以startsWith逻辑被完全忽略
标签: javascript typescript sorting typeerror