1 . class 概述
TS 中的 class 不仅只提供了 class 的语法功能 ,也作为一种类型存在 。且实例对象的类型就是原型 。 如下 : Person类的实例对象 p 的类型是 Person 。
2 . 属性初始化
2 . 1 属性没有默认值
class Person{
age : number
}
2 . 2 属性有默认值 (直接赋值默认值)
class Person{
gender = ' 男 '
}
3 . 类的构造函数 constructor
作用 : 为类的 实例 属性设置值 。
class Person{
age : number
constructor(age : number){
this.age = age
}
}
var p = new Person(18)
console.log(p.age) ; // 18
注意 :
- 属性成员初始化 (比如 , age :number)后,才能在构造函数里通过 this . age来访问 age 属性。
- 要为构造函数参数注明类型 ,否则会被隐式推断为 any 类型
- 构造函数不需要返回值类型 !!
4 . 类的实例方法(跟对象的方法语法一样)
class Point{
x = 1
y = 2
scale( n : number ) : void {
this . x = x * n
this . y = y * n
}
}
var p = new Point() ;
p . scale(10); // 需自行调用使用
console . log(p.x , p.y); // 10 20
5 . 类的继承
TS 中类继承的两种方法 : 1. extends继承 2. implements(实现接口) 注意: JS中只有 extends继承
5 . 1 extends继承
class Animal {
move(){
console . log('走两步')
}
}
class Dog extends Animal{
bark(){
console . log('汪汪汪')
}
}
const dog = new Dog() ;
dog.move() ;
Dog的实例对象 dog 同时具有 父类Animal 和 子类 Dog的所有属性和方法!!!
5 . 2 implements (实现接口 ,类和接口的关系)
注意 : Person类中必须提供 Singable 接口中指定的所有方法和属性
6 . 类属性和方法的可见性修饰
在继承时 ,类的一些属性和方法是不希望被继承的 。所以就有了可见性修饰符!!
6 . 1 可见性修饰符 public(公开的)
public修饰符是默认可见性 。所以可以省略不写
6 . 2 可见性修饰符 protected(受保护的)
仅在 类 和 子类(继承后)中可见 ,两者的实例对象中都是不可见的 。
6 . 3 可见性修饰符 private(私有的)
只能在 类 中被访问 ,在子类、类和子类的实例对象中都不能被访问!!!
7 . readonly 只读修饰符
readonly 只读修饰符 ,只能修饰属性 ,不能修饰方法 ,被它修饰的属性只能在constructor函数里面进行更改 ,在其他地方都无法更改 !!!
-
如果声明时没有指定类型且赋值 ,则它会变成字面量类型 ,在任何地方都无法修改!!!
-
接口 和 对象里面都可以用 readonly 只读修饰符