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
關鍵字與public
、private
和protected
不一樣,它修飾的不是成員的訪問許可權,而是成員的再賦值許可權。
使用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!
readonly
和const
宣告的變數或屬性都不允許二次修改。這兩個屬性的使用區別在於是作為變數還是屬性:
做為變數使用的話用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介面
在物件導向的程式設計中,介面是一種規範的定義,它定義了行為和動作的規範,在程式設計裡面,介面起到一種限制和規範的作用。介面定義了某一批類所需要遵循的規範,介面不關心這些類的內部狀態資料,也不關心這些類裡的方法的實現細節,它只規定這批類裡必須提供某些方法,提供某些方法,提供這些方法的類就可以滿足實際需...