算术运算的右侧必须为“ any”,“ number”或枚举类型

萨拉·梅萨(Sara Mesa)

我在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)

解决方案(使用方法1):

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TypeScript泛型错误:算术运算的左侧必须为“ any”,“ number”,“ bigint”类型

算术运算的左侧和右侧必须为“ any”,“ number”或枚举类型

算术运算的左侧必须为“ any”,“ number”或枚举类型

枚举的后备类型为int

将枚举类型var设置为nil

isbits类型参数的算术运算

表达式必须具有算术或无作用域的枚举类型C ++

打字稿。如何避免在foreach循环中出现此错误:“算术运算的左侧必须为'any','number'或枚举类型”?

为什么即使必须使用类型也不必实现Any特性?

检查给定的元类型是否为枚举

如果element为Any,如何从枚举中获取rawValue?

枚举的枚举,避免使用Any类型

枚举类型的运算符重载

算术运算的右侧必须为“ any”,“ number”,“ bigint”或枚举类型

后续变量声明必须具有相同的类型。变量“ where”的类型必须为“ any []”,但此处的类型为“ string []”

过滤类型为Any的varargs

如何正确地将int类型的算术运算结果存储为C ++中的double类型和不同类型?

Typescript-索引表达式参数的类型必须为'string','number','symbol'或'any'

算术运算符作为枚举?

类型为Any和TypeTag的对象的JSON

如何在NumPy中为算术运算指定结果数据类型?

得到错误算术运算的左侧必须是“any”、“number”或枚举类型

Ionic 3 - Typescript 错误:算术操作数的类型必须是“any”、“number”或枚举类型

算术运算的左侧必须是“any”、“number”或枚举类型。不能将 Number 声明为 number

错误 TS2362:算术运算的左侧必须是“any”、“number”、“bigint”或枚举类型

类型被推断为 any with find moongose typescript

Swift:“'Any' 类型的值没有成员'map'”,数组返回为 Any 类型

为什么Catch 子句变量类型注释必须是any?

算术操作数必须是“any”、“number”、“bigint”或枚举类型。ts(2356)