typescript入門チュートリアル2
1911 ワード
tsにおけるオブジェクト向けメンバー修飾子:public,private,protexted(ts公式サイト:ts)
tsでは、デフォルトのメンバー修飾子がpublicです. public:開示されていることを示し、どこでも呼び出すことができ、クラスでもサブクラスでもオブジェクトでも を直接呼び出すことができる. private:プライベートを表し、クラスでのみアクセスでき、サブクラスまたはオブジェクトではアクセスできません.プライベートな属性またはメソッドを呼び出すには、クラスにパブリックメソッドを設定することでプライベートなメンバーにアクセスでき、公開されたメソッドを外部に露出してアクセスできます.サブクラスが継承された場合、親プライベートの属性とメソッドを継承することもできます.ただし、サブクラスが継承する公有の方法でプライベート属性 にアクセスする. protected:クラスまたはサブクラスでのみアクセスできますが、 は自分のクラスまたはサブクラスオブジェクトではアクセスできません.
総じて言えば、権限範囲:public>protected>private
注意:1.現在のクラスがprivateまたはprotectedと明記されている場合、現在のクラスはnew()できません.親クラスの構造方法がprotectedと明記され、子クラスが親クラスの構造方法を書き換えると、子クラスはnewすることができる.親構造メソッドがプライベートであることを示す場合、子クラスはnewおよび継承できません.2.あるクラスがインスタンス化されたくなくて、ただ子クラスを継承してインスタンス化したい場合、そのクラスの構造方法をprotectedと明記することができるが、この場合、子クラスがsuperによって親クラスの構造方法を継承する必要があることに注意する.1つのクラスが自身のインスタンス化もサブクラスのインスタンス化もしたくない場合、構造方法をprivate 4として明記することができる.サブクラスで親クラスの構築方法を呼び出すにはsuperキーワードで5.一般的な構造方法修飾はpublicまたは直接書かない
静的メソッドと静的プロパティ
1つの属性またはメソッドをstaticで修飾すると、静的属性とメソッドになります.静的属性と静的メソッドはクラス名メソッドしか使用できません.オブジェクトアクセスで静的メンバーを使用するか、いつ非静的メンバーを使用するかをどのように判断できますか.1つの属性またはメソッドがオブジェクトに属する場合、非静的メンバーで表され、1つの属性またはメソッドがクラスに属する場合、静的メンバーが使用されます.
静的メソッドまたは静的プロパティがprotectedまたはprivateに修飾されている場合、クラスでのみ呼び出され、クラス外ではクラス名でアクセスできません.クラス外でアクセスする必要がある場合は、共通のメソッドを露出することでアクセスできます.
---読み取り専用属性(readonly)
tsでは、デフォルトのメンバー修飾子がpublicです.
総じて言えば、権限範囲:public>protected>private
注意:1.現在のクラスがprivateまたはprotectedと明記されている場合、現在のクラスはnew()できません.親クラスの構造方法がprotectedと明記され、子クラスが親クラスの構造方法を書き換えると、子クラスはnewすることができる.親構造メソッドがプライベートであることを示す場合、子クラスはnewおよび継承できません.2.あるクラスがインスタンス化されたくなくて、ただ子クラスを継承してインスタンス化したい場合、そのクラスの構造方法をprotectedと明記することができるが、この場合、子クラスがsuperによって親クラスの構造方法を継承する必要があることに注意する.1つのクラスが自身のインスタンス化もサブクラスのインスタンス化もしたくない場合、構造方法をprivate 4として明記することができる.サブクラスで親クラスの構築方法を呼び出すにはsuperキーワードで5.一般的な構造方法修飾はpublicまたは直接書かない
静的メソッドと静的プロパティ
1つの属性またはメソッドをstaticで修飾すると、静的属性とメソッドになります.静的属性と静的メソッドはクラス名メソッドしか使用できません.オブジェクトアクセスで静的メンバーを使用するか、いつ非静的メンバーを使用するかをどのように判断できますか.1つの属性またはメソッドがオブジェクトに属する場合、非静的メンバーで表され、1つの属性またはメソッドがクラスに属する場合、静的メンバーが使用されます.
class Person{
static firstName:string='jack'
static lastName:string='ma'
private constructor(firstName:string,lastName:string){
Person.firstName=firstName
Person.lastName=lastName
}
// , ,
static getFullName(){
return `${this.firstName} ${this.lastName}`
}
}
静的メソッドまたは静的プロパティがprotectedまたはprivateに修飾されている場合、クラスでのみ呼び出され、クラス外ではクラス名でアクセスできません.クラス外でアクセスする必要がある場合は、共通のメソッドを露出することでアクセスできます.
---読み取り専用属性(readonly)
readonly name:string='jack'
// , , Week.SUN==0
enum Week{
SUN,MON,TUE,WED,THU,FRI,SAT
}
let day:Week=Week.MON