TypeScript でクラス定数を実装する

Migel Hewage Nimesha 2023年6月21日
  1. TypeScript の定数
  2. TypeScript で readonly を使用してクラス定数を実装する
  3. TypeScript で readonlystatic を使用してクラス定数を実装する
TypeScript でクラス定数を実装する

この記事では、readonly キーワードと readonly キーワードを組み合わせた static キーワードを使用してクラス定数を実装する方法を説明します。

TypeScript の定数

プログラミング言語の定数は、一度割り当てられると値を変更できない固定値です。 クラス定数は、一度割り当てられると変更できないクラス内の定数フィールドです。

TypeScript では、クラスの作成は単純なタスクです。 以下は、TypeScript でクラスを作成する方法の構文です。

class className {
    // Block of code
}

上記は、TypeScript でクラスを作成する簡単な方法です。 いくつかの方法に従って、変更または変更できない値を持つ定数フィールドまたはプロパティを持つクラスを作成できます。

TypeScript では、クラス メンバーが const キーワードを持つことができないことを覚えておくことが不可欠です。 クラス メンバーの定数のインライン宣言は、TypeScript では不可能です。

そうしようとすると、コンパイラはコンパイル エラーをスローします。 クラスを定数にするために、次のセクションで説明する TypeScript で使用可能ないくつかのオプションを実装できます。

TypeScript で readonly を使用してクラス定数を実装する

クラス プロパティまたはフィールドを変更不可にするクラスを作成した後、TypeScript 2.0 で導入された readonly キーワードを使用して、クラス フィールドまたはプロパティを変更不可として定義できます。 プロパティを変更しようとすると、エラー メッセージが表示されます。

例:

class DisplayOutput{
readonly name : string = "Only using readonly";
displayOutput() : void{
    console.log(this.name);
}
}

let instance = new DisplayOutput();
instance.displayOutput();

出力:

Only using readonly

readonly のみを使用すると、定数として完全には機能しません。 これは、コンストラクターで代入が許可されているためです。

TypeScript で readonlystatic を使用してクラス定数を実装する

クラス フィールドまたはプロパティを変更不可にするために使用できる別の方法は、static キーワードを使用した readonly キーワードです。 readonly を使用する場合と比較した場合の利点は、コンストラクターで割り当てが許可されないため、1つの場所にしか割り当てられないことです。

例:

class DisplayOutput{
    static readonly username : string = "Using both static and readonly keywords";
    static displayOutput() : void {
        console.log(DisplayOutput.username);
    }
}

DisplayOutput.displayOutput();

出力:

Using both static and readonly keywords
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.

関連記事 - TypeScript Class