カテゴリ


クラス定義


既存のJavaScriptでは、クラスの定義と使用は次のとおりです.
// ES6 class 정의
// main.js
class Person {
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }
}
「≪タイプ・スクリプト|Type Scripts|emdw≫」では、次のPreviewが表示されるのは、作成時のみです.


タイプ・スクリプトでクラスを定義する場合は、クラス内の最上位レベルでクラスが作成した「インスタンスのすべてのプロパティ・キーの名前」と、インスタンス・プロパティに割り当てられた「プロパティ値のタイプ」を作成する必要があります.
コンストラクション関数メソッドのパラメータのタイプも作成する必要があります.
すなわち、タイプスクリプトでクラスを定義する場合は、コンストラクション関数メソッドで初期化されたすべてのインスタンスプロシージャにタイプを指定し、コンストラクション関数メソッドのパラメータにタイプを指定する必要があります.
// main.ts
class Person {
    // 인스턴스 프로퍼티의 키 이름과 할당받을 값의 타입을 지정
    name: string;
    age: number;
    
    // 매개변수의 타입 지정
    constructor(name: string, age: number) {
        this.name = name;
        this.age = age;
    }
}

アクセス指定子


タイプ・スクリプトを使用してクラスを定義する場合は、インスタンス・プロセスがクラスに割り当てる値のタイプを作成する必要があることに注意してください.
インスタンス・プロセスのタイプを指定すると、対応する「プロセスのアクセス指定子」も作成できます.
// main.ts
class Person {
    // 인스턴스 프로퍼티의 이름과 할당받을 타입을 지정
    // 추가적으로 프로퍼티의 접근 지정자 지정(public, prviate, readonly)
    public name: string;
    private age: number;
    protected log: string;
    readonly role: string;
    
    // 매개변수의 타입 지정
    constructor(name: string, age: number, role: string) {
        this.name = name;
        this.age = age;
        this.role = role;
    }
}
デフォルトでは、すべてのインスタンス・プロセスは共通であり、クラスの外部からアクセスできます.すなわち、作成されたインスタンスの場合、name propertyは外部からアクセス可能なpropertyになります.
一方、age Propertyではprivateとして指定され、クラスのみでアクセス可能なPropertyとなります.
role propertyの場合、readonlyを使用してアクセス指定子を作成したため、roleという名前のpropertyの値しか読めず、値は変更できません.つまり、get EXCESSのみが許可され、set EXCESSは許可されません