言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

TypeScript辞典

  1. トップページ
  2. TypeScript辞典
  3. クラスの型注釈

クラスの型注釈

対応: TypeScript 1.0(2014)

TypeScript では、クラスのプロパティ・コンストラクタ引数・メソッドに型注釈を付けることができます。JavaScript のクラス構文をベースに型情報を加えることで、安全にオブジェクト指向プログラミングを行えます。

構文

class ClassName {
  propertyName: Type;

  constructor(arg: Type) {
    this.propertyName = arg;
  }

  methodName(arg: Type): ReturnType {
    // ...
  }
}

型注釈の対象一覧

対象書き方の例概要
プロパティname: string;クラスフィールドに型を指定する。
コンストラクタ引数constructor(id: number)インスタンス生成時の引数に型を付ける。
メソッドの引数greet(name: string)メソッドが受け取る引数の型を指定する。
メソッドの戻り値getAge(): numberメソッドが返す値の型を指定する。
readonly プロパティreadonly id: number;初期化後に変更できないプロパティを宣言する。

サンプルコード

class Person {
  readonly id: number;
  name: string;
  affiliation: string;

  constructor(id: number, name: string, affiliation: string) {
    this.id = id;
    this.name = name;
    this.affiliation = affiliation;
  }

  greet(): string {
    return `こんにちは、${this.affiliation}の${this.name}です。`;
  }

  introduce(): void {
    console.log(this.greet());
  }
}

const member = new Person(1, 'member_1', '開発部');
console.log(member.greet());
member.introduce();

// member.id = 99; // エラー: readonly プロパティには代入できない

// コンストラクタ引数の省略記法(アクセス修飾子と組み合わせる)
class Point {
  constructor(
    public x: number,
    public y: number
  ) {}

  distance(): number {
    return Math.sqrt(this.x ** 2 + this.y ** 2);
  }
}

const p = new Point(3, 4);
console.log(p.distance()); // 5

実行すると次のように出力されます。

npx ts-node ts_class_type.ts
こんにちは、開発部のmember_1です。
こんにちは、開発部のmember_1です。
5

概要

TypeScript のクラスでは、プロパティを宣言してから代入するか、コンストラクタ引数に アクセス修飾子(『public』『private』など)を付けることでプロパティ宣言と初期化を同時に行う省略記法が使えます。

『readonly』を付けたプロパティはコンストラクタ内でのみ代入でき、それ以降は変更できません。オブジェクトの不変性を保つための基本的な手段として有効です。

クラスは型としても機能します。インターフェースをクラスに適用するには implements を使い、継承には JavaScript 標準の『extends』を使います。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。