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

类继承链中实例化子类A时触发Uncaught TypeError异常如何解决?

解决"Uncaught TypeError: Super expression must either be null or a function"错误

常见原因及修复方案

1. 浏览器原生ES模块不识别.ts后缀

如果是直接在浏览器环境使用ES模块(未经过打包工具编译),浏览器无法识别.ts后缀,需要移除导入语句中的.ts后缀:

  • A.ts修改后:
import { B } from "./B";
export class A extends B {}
  • B.ts修改后:
import { C } from "./C";
export class B extends C {}
  • functions.ts修改后:
import { A } from "./A";
export function doSomething(){
  const a = new A();
}

2. TypeScript编译配置有误

检查tsconfig.json配置,确保以下关键项设置正确:

  • target版本不低于ES6(类继承是ES6特性)
  • module选择适配运行环境的格式(比如ESNext或CommonJS)
  • 未开启会破坏类继承逻辑的异常编译选项

参考基础配置示例:

{
  "compilerOptions": {
    "target": "ES6",
    "module": "ESNext",
    "strict": true,
    "moduleResolution": "NodeNext"
  }
}

3. 存在循环引用

排查是否有其他文件间接造成A、B、C之间的循环依赖(比如C文件导入了A或B)。循环引用会导致类在继承时还未被正确定义,进而触发该错误。

4. 导出导入不匹配

确认所有类均为命名导出,且导入时使用对应名称,不要混用默认导出与命名导出。比如若某个类写成export default class C,但导入时用import { C } from "./C",会导致C为undefined,继承操作自然失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 02:58:12