代码之家  ›  专栏  ›  技术社区  ›  Shivam Sahil

Typescript不允许我使用parseInt

  •  0
  • Shivam Sahil  · 技术社区  · 5 年前

    const splitHalfs = (numsArray: number[]) => {
      if (numsArray.length === 2) return numsArray;
    
      const midElement = parseInt(numsArray.length / 2);
    
      //Rest of the code goes here
    };
    
    

    但是,这不会显示任何错误:

    const splitHalfs = (numsArray: number[]) => {
      if (numsArray.length === 2) return numsArray;
    
      const midElement = numsArray.length / 2;
    
      //Rest of the code goes here
    };
    

    我得到的错误是:

    error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'.
    
    12   const midElement = parseInt(numsArray.length / 2);
                                     ~~~~~~~~~~~~~~~~~~~~
    
    2 回复  |  直到 5 年前
        1
  •  1
  •   Shariful Islam Mubin    5 年前

    解决方案1:

    看这张照片 parseInt 功能定义:

    parseInt(string: string, radix?: number): number;
    

    这意味着,它需要第一个参数作为 string . 所以,这是一个好消息 第一个解决方案:

    const midElement = parseInt((numsArray.length / 2).toString());
    

    解决方案2:

    你也可以通过 not using parseInt Math.floor 如下图所示:

    const midElement = Math.floor(numsArray.length / 2);
    
        2
  •  1
  •   jgamesl    5 年前

    我认为这是因为,通过获取numsArray的长度,您实际上是在尝试将一个数字转换为另一个数字,因此您可以将“numsArray.length”返回到字符串,或者删除“parseInt”

    推荐文章