我在JS中有此代码,我需要使其在TypeScript中工作。
它一直在说:
算术运算的右侧必须为“ any”,“ number”或枚举类型
sort(field, reverse, primer) {
var key = primer ?
function(x) {return primer(x[field])} :
function(x) {return x[field]};
reverse = [-1, 1][+!!reverse];
return function (a, b) {
return a = key(a), b = key(b), reverse * ((a > b)) - (b > a));
}
}
有任何想法吗?
(a > b)
并且(b > a)
都返回boolean
,另外((a > b))
有一个支架太多。
要解决此问题,两个boolean
结果都必须转换为number
。这可以通过以下三种方法之一来实现:
1. +bool
2. bool ? 1 : 0
3. Number(bool)
sort(field, reverse, primer) {
var key = primer ?
function(x) {return primer(x[field])} :
function(x) {return x[field]};
reverse = [-1, 1][+!!reverse];
return function (a, b) {
return a = key(a), b = key(b), reverse * (+(a > b) - +(b > a));
}
}
注意:
使用(+(a > b) - (b > a))
将不起作用,因为-
将不会用作算术转换而是减法,因此将保持类型错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句