Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【JavaScript ECMAScript】TypeError: class constructors must be invoked with 'new'エラーの使い方

TypeError: class constructors must be invoked with 'new'エラーの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

TypeError: class constructors must be invoked with 'new'オブジェクトは、JavaScriptのクラスから新しいインスタンスを作成する際に発生する型エラーを表すオブジェクトです。このエラーは、クラスのコンストラクターを呼び出す際に、newキーワードを使用しなかった場合に発生します。

JavaScriptにおいて、クラスはオブジェクトを作成するための「設計図」のようなものです。この設計図から具体的な「実物」であるインスタンス(オブジェクト)を生成するためには、必ずクラス名の前にnewキーワードを付けて呼び出す必要があります。例えば、class MyClass { /* ... */ }というクラスがある場合、const instance = new MyClass();のように記述するのが正しい方法です。

もしnewキーワードを付けずにconst instance = MyClass();のように呼び出してしまうと、JavaScriptの実行環境はクラスのコンストラクターを通常の関数として扱おうとします。しかし、ECMAScriptの仕様では、クラスのコンストラクターはnewキーワードを伴ってのみ呼び出し可能であると厳密に定められています。newを使用することで、新しい空のオブジェクトが作成され、そのオブジェクトがコンストラクター内のthisコンテキストとして設定され、初期化処理が適切に行われるため、クラスが本来の目的どおりに機能します。

したがって、このエラーが発生した場合は、クラスからオブジェクトを作成するすべての箇所で、クラス名の前にnewキーワードが正しく記述されているかを確認し、修正してください。これにより、意図したとおりにクラスのインスタンスが生成され、プログラムが正常に動作するようになります。

構文(syntax)

1class MyClass {
2  constructor() {
3    // コンストラクタの内容
4  }
5}
6
7// TypeError: class constructors must be invoked with 'new' が発生する呼び出し方
8MyClass();

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

関連コンテンツ

関連プログラミング言語