1. 程式人生 > >typescript 入門教程二

typescript 入門教程二

ts中面向物件成員修飾符:public , private , protexted(ts官方網站:ts)

在ts中,預設的成員修飾符就是public

  • public:是表示是公開的,在任何地方,都可以呼叫,不管在類中,還是子類中,還是物件中均是可以直接呼叫
  • private:是表示私有的,只能在類中訪問,不能在子類或者物件中訪問,要呼叫私有的屬性或者方法,可以通過在類中設定公有的方法訪問私有的成員,對外暴露公有的方法進行訪問,子類繼承的時候,也可以繼承父類私有的屬性和方法,但是也要通過在子類繼承過來的公有的方法進行訪問私有的屬性
  • protected: 只能在類中或者子類中進行訪問,但是不能在自身類或者子類物件中訪問
    總的老說,許可權範圍:public>protected>private

注意:
1.如果當前類被申明為private或者protected,當前類不能new ( );當父類的構造方法被申明為protected,子類重寫父類的構造方法之後,子類可以new;如果父類構造方法申明私有,子類不能new和繼承。
2.當某個類不想被例項化,只是想子類繼承後例項化,可以將該類的構造方法申明為protected,但是注意這時候需要子類通過super繼承父類的構造方法才行
3.當一個類既不想自身例項化,也不想子類例項化,可以將構造方法申明為private
4.子類中如果想呼叫父類的構造方法,可以通過super關鍵字實現
5.一般構造方法修飾是public或者直接不寫


靜態方法和靜態屬性
![file](https://img2018.cnblogs.com/blog/1762823/201910/1762823-20191030195753429-79152640.jpg)

將一個屬性或者方法通過static修飾,就變成了靜態屬性和方法,靜態屬性和靜態方法只能通過類名方法,不能通過物件訪問
如何判斷用靜態成員,什麼時候用非靜態成員?
當一個屬性或者方法是屬於物件的時候,用非靜態成員表示,當一個屬性或者方法是屬於類的時候,使用靜態成員

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