Ts 的类
TS 中的公共、私有和受保護的修飾符:
1.public表示公共的,用來指定在創建實例后可以通過實例訪問的,也就是類定義的外部可以訪問的屬性和方法。默認是 public
2.private修飾符表示私有的,它修飾的屬性在類的定義外面是沒法訪問的:
class Parent {private age: number;constructor(age: number) {this.age = age;} } const p = new Parent(18); console.log(p); // { age: 18 } console.log(p.age); // error 屬性“age”為私有屬性,只能在類“Parent”中訪問 console.log(Parent.age); // error 類型“typeof ParentA”上不存在屬性“age” class Child extends Parent {constructor(age: number) {super(age);console.log(super.age); // 通過 "super" 關鍵字只能訪問基類的公共方法和受保護方法 } }3.rotected修飾符是受保護修飾符,和private有些相似,但有一點不同,protected修飾的成員在繼承該類的子類中可以訪問
4.readonly 修飾符
只讀不能修改
?
?參數屬性
參數屬性簡單來說就是在 constructor 構造函數的參數前面加上訪問限定符,也就是前面講的 public、private、protected 和 readonly 中的任意一個
class B {constructor(public name: string) {} } const b = new B("aaa"); console.log(b.name)?
靜態屬性
和 ES6 的類一樣,在 TS 中一樣使用static關鍵字來指定屬性或方法是靜態的,實例將不會添加這個靜態屬性,也不會繼承這個靜態方法,你可以使用修飾符和 static 關鍵字來指定一個屬性或方法
?
?
可選類屬性
使用?符號來標記
?
抽象類
抽象類一般用來被其他類繼承,而不直接用它創建實例。抽象類和類內部定義抽象方法,使用abstract關鍵字
abstract class People {constructor(public name: string) {}abstract printName(): void; } class Man extends People {// error 非抽象類“Man”不會實現繼承自“People”類的抽象成員"printName" constructor(name: string) {super(name);this.name = name;} } const m = new Man("lison"); m.printName(); // error m.printName is not a function通過上面的例子我們可以看到,在抽象類里定義的抽象方法,在子類中是不會繼承的,所以在子類中必須實現該方法的定義
?
轉載于:https://www.cnblogs.com/guangzhou11/p/11314338.html
總結
- 上一篇: Cuda编程学习(一)
- 下一篇: 类型推论