繁体   English   中英

当试图在 TypeScript 中查找最大数字时,我收到此错误:类型“字符串”不可分配给类型“数字”

[英]When trying to find the maximum number in TypeScript, I am getting this error: Type 'string' is not assignable to type 'number'

我目前正在学习 TypeScript,我正在尝试在 Codewars 上解决这个Kata 我能够在 JavaScript 中解决它,但是当我尝试在 TypeScript 中解决它时,我收到一个错误,如下所述。 我使用与我的 JavaScript 答案相同的方法来回答 TypeScript 版本。

问题是:给定一个数字,我要返回最大的数字。 因此,如果我输入 213,我应该返回 312,如下所示:

maxNumber (213) ==> return (321)

这是我为 JavaScript 提出的解决方案。

    function maxNumber(number) {
  
    var num = String(number).split('').sort().reverse().join('');
    return num;
    }

   const answer = maxNumber(1234)
    console.log(answer)
    //Output: 4321

我尝试了相同的方法,但在 TypeScript 中,但我不断收到错误消息:类型“字符串”不可分配给类型“数字”。

export function maxNumber(n: number): number {
  var num = String(n).split('').sort().reverse().join('');
  return num;
}

const answer = maxNumber(1234)
console.log(answer)

因此,我对该错误的响应是获取正在输入的数字,将其转换为字符串,然后使用 split 方法将其转换回数组内的数字,但我收到相同的错误消息。

export function maxNumber(n: number): number {
  var num = n.toString();
  
  var numNew = num.split('').sort().reverse().join('');
   
  return numNew;
  
}

const answer = maxNumber(1234)
console.log(answer)

我知道它在说什么,但我不能将类型字符串分配给n然后返回一个数字。 有没有办法来解决这个问题? 我知道由于使用TypeScript,它应该会发现这样的错误,而仅使用JavaScript时可能找不到。

您可以使用 parseInt 将值作为数字返回:

return parseInt(numNew, 10); // the 10 specifies base 10 (decimal)

请注意,即使在 Javascript 版本中,您返回的是字符串而不是数字,如果调用您的函数的代码需要一个数字并对结果进行比较或以其他方式将其视为 integer,这将是一个问题,所以上面的解决方案应该两种情况都适用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM