diff --git a/content/posts/2022.04.18.javascript-typeerror-super-expression.md b/content/posts/2022.04.18.javascript-typeerror-super-expression.md new file mode 100644 index 0000000..996abf4 --- /dev/null +++ b/content/posts/2022.04.18.javascript-typeerror-super-expression.md @@ -0,0 +1,39 @@ +--- +title: "JavaScript error \"Super Expression must either be null or a function\"" +date: 2022-04-18T04:05:40-04:00 +draft: true +toc: false +images: +tags: + - dev + - javascript + - typescript +--- + +I just got this error when working on some TypeScript code. + +``` +Uncaught TypeError: Super Expression must either be null or a function +``` + +The line for the error pointed to the constructor of a class. What's happening? +Circular dependencies it turns out. + +```ts +// in foo.ts +class Foo { + foo() { + new Bar().doSomething(); + } +} + +// in bar.ts +class Bar extends Foo { + // ... +} +``` + +It's obvious when boiled down like this, but it's something you'll want to make +sure to avoid. I solved this issue by making `Bar` not extend `Foo`. It added +little to no duplicated code for me in this case, so just separating the classes +was easy enough.