#13 TypeScriptで学ぶクラスの基本

TypeScriptのクラスは、JavaScriptの書き方に、型とアクセス制御が加わったものです。この記事では、TypeScriptにおけるクラスの基本と、アクセス制御の使い方を解説します。

型付きのクラス

class Person {
    name: string;

    constructor(name: string) {
        this.name = name;
    }

    greet(): void {
        console.log(`こんにちは、${this.name}です`);
    }
}

プロパティ(name)にも型を明示するのが特徴です。

コンストラクタの引数を省略して書く

TypeScriptには、コンストラクタの引数にアクセス修飾子を付けるだけで、プロパティの宣言と代入をまとめて済ませられる省略記法があります。

class Person {
    constructor(public name: string) {}
}

const person = new Person("太郎");
console.log(person.name);

this.name = name;を書かなくても、public name: stringと書くだけでプロパティの宣言と代入が自動的に行われます。

アクセス制御という仕組み

TypeScriptには、クラスの外から特定の情報を触れないようにする「アクセス制御」があります。

class Person {
    private name: string;
    constructor(name: string) {
        this.name = name;
    }
}

const person = new Person("太郎");
console.log(person.name); // コンパイルエラー

privateを付けたプロパティは、クラスの外から直接アクセスしようとするとエラーになります。継承したクラスからはアクセスできるが外部からはできないprotectedという中間的な範囲もあります。

TypeScriptならではの注意点

privateはTypeScriptの型チェックの段階でのみ有効な制約で、コンパイル後のJavaScriptでは完全に隠されるわけではありません。それでも、開発中に「触ってはいけない部分」を明確にできるという点で、コードの安全性を高めるのに役立ちます。JavaScript自体にも#を使った本物のプライベートフィールドがありますが、TypeScriptのprivateとは仕組みが異なる点も覚えておくとよいでしょう。

まとめ

TypeScriptのクラスはJavaScriptと同じ書き方に、型とアクセス制御が加わったものです。コンストラクタの省略記法やprivateを活用して、意図しないアクセスを防ぎましょう。


本ページはプロモーションを含みます。

参考書籍(PR)

TypeScriptをもっと学びたい方には「プロを目指す人のためのTypeScript入門」がおすすめです。


PR

コードを書かずに自動化したい方へ

「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。

コメント

このブログの人気の投稿

#25 Rustで学ぶAI API(ChatGPT等)の呼び出し方の基本

#8 C++で学ぶ文字列操作の基本

#16 TypeScriptで学ぶ辞書型(マップ)の基本