繁体   English   中英

类型“字符串”不可分配给类型“数字”.ts(2322)

[英]Type 'string' is not assignable to type 'number'.ts(2322)

我是 typescript 的新手,并试图弄清楚如何处理此错误。 我理解它为什么会发生,但找不到正确的方法来处理这个问题。

export function intToString(num: number): string {
  num = num.toString().replace(/[^0-9.]/g, ``);

  if (num < 1000) {
    return num;
  }

  const si = [
    { v: 1e3, s: `K` },
    { v: 1e6, s: `M` },
    { v: 1e9, s: `B` },
    { v: 1e12, s: `T` },
    { v: 1e15, s: `P` },
    { v: 1e18, s: `E` },
  ];

  let index;
  for (index = si.length - 1; index > 0; index--) {
    if (num >= si[index].v) {
      break;
    }
  }

  return (
    (num / si[index].v).toFixed(2).replace(/\.0+$|(\.[0-9]*[1-9])0+$/, `$1`) +
    si[index].s
  );
}

错误:

(parameter) num: number
Type 'number' is not assignable to type 'string'.ts(2322)

问题主要出在这部分。 您正在返回“num”,这是您输入的数字类型。 但是您的 function 在这里需要一个字符串类型 output

if (num < 1000) {
    return num;
}

这应该解决它

export function intToString(num: number): string {
  if (num < 1000) {
    return num.toString();
  }

  const si = [
    { v: 1e3, s: `K` },
    { v: 1e6, s: `M` },
    { v: 1e9, s: `B` },
    { v: 1e12, s: `T` },
    { v: 1e15, s: `P` },
    { v: 1e18, s: `E` },
  ];

  let index;
  for (index = si.length - 1; index > 0; index--) {
    if (num >= si[index].v) {
      break;
    }
  }

  return (
    (num / si[index].v).toFixed(2).replace(/\.0+$|(\.[0-9]*[1-9])0+$/, `$1`) +
    si[index].s
  );
}

暂无
暂无

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

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