TypeScript類 介面 繼承

2021-08-19 23:33:28 字數 4085 閱讀 4147

class

point

tostring()

}

let p=new point(1,2);

在ts裡,成員都預設為public。被public修飾的屬性,我們在類的內外都可以自由訪問到這些被定義的屬性。

class animal 

}new animal("cat").name;//cat

當成員被標記成private時,它就不能在宣告它的類的外部訪問。

class

animal

}new animal("cat").name;//error!: property 'name'

is private and only accessible within class 'animal'.

class

animal1

}class

animal2

}//這樣的寫法是不會出錯的

let a:animal1=new animal2("cat");

class

animal1

}class

animal2

extends

animal1

}class

animal3

}let animal1: animal1 = new animal2("cat");//沒問題。animal1和animal2的private修飾的成員變數name都來自於animal1(都是來自同一處宣告)。

let animal3: animal1 = new animal3("cat");//error:type 'animal3' is not assignable to type 'animal3'.

protected修飾符與private修飾符的行為很相似,但有一點不同,protected成員在派生類中仍然可以訪問。 

使用private修飾的父類成員,派生類無法訪問。

class

person

}class

employee

extends

person

public sayname()

}let xiaoming = new employee("xiaoming");

console.log(xiaoming.sayname());

class

person

}class

employee

extends

person

public sayname()

}//派生類中仍能繼續使用

let xiaoming = new employee("xiaoming");

console.log(xiaoming.sayname());

readonly關鍵字與publicprivateprotected不一樣,它修飾的不是成員的訪問許可權,而是成員的再賦值許可權。 

使用readonly關鍵字將屬性設定為唯讀的。 唯讀屬性必須在宣告時或建構函式裡被初始化。

class octopus 

}let dad = new octopus("man with the 8 strong legs");

dad.name = "man with the 3-piece suit"; // 錯誤! name 是唯讀的.

abstract

class

animal

}

①抽象類中的抽象方法不包含具體實現並且必須在派生類中實現。 

②抽象方法必須包含abstract關鍵字並且可以包含訪問修飾符。

inte***ce

personvaule

function

person

(person:personvaule)

//建立例項

var xiaoming=new person()

var xiaoming2=new person()//沒有問題

var xiaoming3=new person()//提示屬性缺失:property 'age'

is missing in type ''.

inte***ce animalvaule

function animal(animal:animalvaule)

let cat=new animal();

let dog=new animal()//

'lifestle' does not exist in type 'animalvaule'.

inte***ce point
let p1: point = ;

p1.x = 5; // error!

readonlyconst宣告的變數或屬性都不允許二次修改。這兩個屬性的使用區別在於是作為變數還是屬性: 

做為變數使用的話用const, 

做為屬性則使用readonly

inte***ce searchfunc 

let mysearch:searchfunc=function(src,sub)

inte***ce

nn let nn: nn = [1, 2];

inte***ce

ns let ns: ns = ["1", "2"];

inte***ce ss 

let ss: ss = ;

inte***ce sn

let sn: sn = ;

inte***ce readonlystringarray 

let myarray: readonlystringarray = ["alice", "bob"];

myarray[2] = "mallory"; // error!

inte***ce nn 

let nn: nn = [1, 2];

class

animal

class

dogextends

animal

//error!: numeric index type 'animal' is not assignable to string index type 'dog'.

inte***ce

notokay

class

animal

class

dogextends

animal

inte***ce

okay

inte***ce

clockinte***ce

class

clock

implements

clockinte***ce

}

class

animal

}class

dogextends

animal

new dog("mydog").name;//mydog

Typescript初探 類與繼承

類 類的關鍵字 clss可以聲名乙個類,類可以從字面上理解,類裡面有很多態別的資料或者方法,類可以被子類或者介面繼承。class greeter greet let greeter newgreeter world 上面是乙個類的使用,可見類裡面可以囊括多種資料介面。我們一般這樣說 這個類有3個成員...

TypeScript學習筆記3 類與介面

介面 inte ces 可以用於對 物件的形狀 shape 進行描述。implements 實現 implements 是物件導向中的乙個重要概念。類實現介面 乙個類只能繼承自另乙個類,有時候不同類之間可以有一些共有的特性,這時候就可以把特性提取成介面 inte ces 用 implements 關...

筆記 TypeScript介面

在物件導向的程式設計中,介面是一種規範的定義,它定義了行為和動作的規範,在程式設計裡面,介面起到一種限制和規範的作用。介面定義了某一批類所需要遵循的規範,介面不關心這些類的內部狀態資料,也不關心這些類裡的方法的實現細節,它只規定這批類裡必須提供某些方法,提供某些方法,提供這些方法的類就可以滿足實際需...