T-CREATOR

【解決方法】TypeScript発生したTS2564 エラーの対処

【解決方法】TypeScript発生したTS2564 エラーの対処
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

TypeScript で開発している際にTS2564エラーが発生したためその解決手順をまとめています。

環境

  • TypeScript 4.7.4

発生したエラー

consoleerror TS2564: Property 'prop' has no initializer and is not definitely assigned in the constructor.

原因

原因はプロパティが初期化されていないことにより発生するエラーとなります。

typescriptclass Hoge {
  prop: string;
}

解決方法

いずれかの形で解決を実施します。

  • コンストラクタで初期化する
  • initializer で初期化する
  • undefinedとのユニオン型で型注釈する

コンストラクタで初期化する

コンストラクタで初期化する場合は下記のように対応します。

typescriptclass Hoge {
  prop: number;
 
  constructor() {
    this.prop = 1;
  }
}

initializerで初期化する

initializerで初期化する場合は下記のように対応します。

typescriptclass Hoge {
  prop: number = 1;
}

undefinedとのユニオン型で型注釈する

オプショナルで対応場合は下記のように対応します。

typescriptclass Hoge {
  prop?: number;
}

ユニオン型を定義する場合は下記のように対応します。

typescriptclass Foo {
  prop: number | undefined;
}

暫定で対応

暫定で対応したい場合はtsconfigへ下記のるルールを追加すると暫定としてエラーは解消します。

json"strictPropertyInitialization": false

記事Article

もっと見る