gpt4 book ai didi

javascript - 算术运算的右侧必须是类型 'any' 、 'number' 或枚举类型

转载 作者:搜寻专家 更新时间:2023-10-30 20:55:13 26 4
gpt4 key购买 nike

我在 JS 中有这段代码,我需要让它在 TypeScript 中工作。
它一直在说:

The right hand side of an arithmetic operation must be of type 'any', 'number' or an enum type

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。这可以通过以下 3 种方法之一实现:

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)) 是行不通的,因为 - 不是算术转换而是减法,因此保持类型错误。

关于javascript - 算术运算的右侧必须是类型 'any' 、 'number' 或枚举类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51539159/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com