You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 5 报错TS2350:仅能以new调用void函数的问题排查

解决TS2350: Only a void function can be called with the 'new' keyword 报错

嘿,这个报错我太熟了!问题根源一眼就能看出来:你不小心用new关键字去调用了一个根本不是构造函数的方法。

具体到你的场景,大概率是写了类似new Date.now()这样的代码——Date.now()是Date对象的静态方法,它的作用就是直接返回当前时间的时间戳(一个数字),完全不需要用new来调用,因为它根本不是用来创建实例的构造函数。TypeScript的类型检查机制会严格拦截这种错误用法,所以就抛出了TS2350。

修复方法分两种情况:

  • 如果你的需求就是获取当前时间戳,直接去掉new就行:
    // 监听回车键事件获取时间戳
    document.addEventListener('keydown', (e) => {
      if (e.key === 'Enter') {
        const timestamp = Date.now();
        console.log('当前时间戳:', timestamp);
      }
    });
    
  • 如果你其实是想创建一个当前时间的Date实例(之后可能还要做其他日期操作),那应该用new Date(),而不是去碰Date.now():
    document.addEventListener('keydown', (e) => {
      if (e.key === 'Enter') {
        const currentDate = new Date();
        const timestamp = currentDate.getTime(); // 同样能拿到时间戳
        console.log('当前时间对象:', currentDate);
        console.log('对应的时间戳:', timestamp);
      }
    });
    

简单总结下:new关键字是用来调用构造函数创建对象实例的,而Date.now()是个直接返回值的静态方法,两者完全不搭,去掉new就搞定啦!

内容的提问来源于stack exchange,提问作者stacka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:23:04