TypeScript モデルクラス解説
TypeScriptでモデルクラスを作成する
TypeScriptでは、オブジェクト指向プログラミングの概念をより厳密に実装するために、クラスを使用します。特に、モデルクラスは、アプリケーションのデータ構造を定義し、データの操作や検証を行うための重要な役割を果たします。
モデルクラスの基本構造
以下は、シンプルなモデルクラスの例です。
class Person {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
}
- コンストラクタ
constructor
はクラスのインスタンスを初期化するための関数です。プロパティに値を設定します。 - プロパティ
name
とage
はクラスのプロパティです。これらのプロパティは、クラスのインスタンスが持つデータを表します。 - クラス宣言
class Person
でクラスを宣言します。
型の注釈
TypeScriptでは、変数やプロパティの型を明示的に指定することができます。これは、コードの可読性とエラーの早期発見に役立ちます。
class Person {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
}
name
とage
の型はそれぞれstring
とnumber
に注釈されています。
メソッド
クラスには、メソッドと呼ばれる関数を含めることができます。メソッドは、クラスのインスタンスに対して操作を実行するための機能を提供します。
class Person {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
greet() {
console.log("Hello, my name is " + this .name);
}
}
greet
はメソッドです。このメソッドは、コンソールに挨拶メッセージを出力します。
クラスのインスタンス化
クラスのインスタンスを作成するには、new
キーワードを使用します。
const john = new Person("John Doe", 30);
john.greet(); // Output: Hello, my name is John Doe
john
はPerson
クラスのインスタンスです。
モデルクラスの活用
モデルクラスは、アプリケーションのさまざまな場面で活用されます。例えば、
- 複雑なデータ構造
複数のモデルクラスを組み合わせて、複雑なデータ構造を表現することができます。 - データの検証
モデルクラスのプロパティに型注釈を付けることで、不正なデータの入力を防ぐことができます。 - データの保存
モデルクラスのインスタンスをデータベースに保存することができます。
TypeScript モデルクラス解説: コード例
基本的なモデルクラス
class Person {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
}
- コンストラクタ
constructor
はクラスのインスタンスを初期化します。 - プロパティ
name
とage
はクラスのプロパティです。
メソッドの追加
class Person {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
greet() {
console.log("Hello, my name is " + this .name);
}
}
greet
はメソッドです。クラスのインスタンスに対して操作を実行します。
const john = new Person("John Doe", 30);
john.greet(); // Output: Hello, my name is John Doe
継承
class Student extends Person {
studentId: string;
constructor(name: string, age: number, studentId: string) {
super(name, age);
this.studentId = studentId;
}
}
super
キーワードを使用して親クラスのコンストラクタを呼び出します。Stud ent
クラスはPerson
クラスを継承しています。
インターフェース
interface PersonInterface {
name: string;
age: number;
greet(): void;
}
class Person implements PersonInterface {
// ...
}
Person
クラスはPersonInterface
を実装しています。PersonInterface
はインターフェースです。クラスが実装すべきプロパティとメソッドを定義します。
ジェネリック型
class Pair<T, U> {
first: T;
second: U;
constructor(first: T, second: U) {
this.first = first;
this.second = second;
}
}
Pair
はジェネリッククラスです。型パラメータT
とU
を使用して、さまざまな型のペアを表現できます。
レコード型 (Record Type)
レコード型は、オブジェクトのキーと値のペアを定義する簡潔な方法です。
type Person = {
name: string;
age: number;
};
const john: Person = {
name: "John Doe",
age: 30
};
インターフェース (Interface)
インターフェースは、クラスが実装すべきプロパティとメソッドを定義するものです。
interface Person {
name: string;
age: number;
greet(): void;
}
class PersonImpl implements Person {
// ...
}
クラス (Class)
クラスは、オブジェクト指向プログラミングの基本的な要素です。
class Person {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
}
関数型プログラミング (Functional Programming)
関数型プログラミングのアプローチでは、データ構造を関数やオブジェクトとして表現することができます。
type Person = {
name: string;
age: number;
};
const greetPerson = (person: Person) => {
console.log("Hello, my name is " + person.name);
};
ORM (Object-Relational Mapping)
ORMは、データベースとオブジェクト間のマッピングを行うためのツールです。
// Using a popular ORM like TypeORM
@Entity()
export class Person {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column()
age: number;
}
データ構造ライブラリ
データ構造ライブラリを使用することで、複雑なデータ構造を簡単に扱うことができます。
// Using a library like Immutable.js
import { Map } from 'immutable';
const person = Map({
name: "John Doe",
age: 30
});
typescript