typescript 入门教程二

2019-10-30  本文已影响0人  kaizhen
ts中面向对象成员修饰符:public , private , protexted(ts官方网站:ts

在ts中,默认的成员修饰符就是public

注意:
1.如果当前类被申明为private或者protected,当前类不能new ( );当父类的构造方法被申明为protected,子类重写父类的构造方法之后,子类可以new;如果父类构造方法申明私有,子类不能new和继承。
2.当某个类不想被实例化,只是想子类继承后实例化,可以将该类的构造方法申明为protected,但是注意这时候需要子类通过super继承父类的构造方法才行
3.当一个类既不想自身实例化,也不想子类实例化,可以将构造方法申明为private
4.子类中如果想调用父类的构造方法,可以通过super关键字实现
5.一般构造方法修饰是public或者直接不写


静态方法和静态属性

<center>

file
</center>
将一个属性或者方法通过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
上一篇 下一篇

猜你喜欢

热点阅读