TypeScript系列 : 类class

简介

对比于JavaScript,基本上是函数式编程,创建对象和类则是通过使用函数和原型链的方式来实现;然而TypeScript则照搬了java语言OOP思想,在JavaScript的基础上,提供更加强大的面向对象编程特性;

类的本质就是对事物的抽象,把同一类事物中相同的属性和方法提取并汇总在一起,形成一个抽象整体,以此来描述全体事物的静态特征和动态特征;

类的定义

在TypeScript中,通过关键字class来定义类,一个类中包含若干属性和方法;一般类中的方法在声明之后必须立刻实现,除非通过关键字declare,将类的声明和实现分离开来;

由于Typescript中的类具有结构化类型的特性,所以系统中对类的名称不敏感,只对类中的各个成员的类型敏感;只要两个类中的各个成员类型都是一致的,那么就可以认为这两个类是兼容的,相互等价的;

类的实例化

类的实例化,也就是创建类的实例对象,通过关键字new即可完成对象的实例化,同时还会自动调用构造函数constructor方法来初始化类的属性;

constructor方法也称构造器,一般都需要手动将其声明并实现,当然如果不在类中声明constructor方法,就会调用系统自带的默认constructor方法;(对象的字面量赋值是不会触发constructor方法的调用)

类中的属性,除了可选属性和任意属性之外,其他类型的属性都要初始化,否则就会触发运行时错误;属性可以在声明时直接赋值初始化,也可以在构造函数里初始化;

但属性在声明时的赋值,会被构造函数里的赋值所有覆盖,如果构造函数没有对其赋值,则所有根据此类创建的对象中这个属性的值都是一样的;

类中不允许存在多个构造函数,也就是TypeScript的构造函数不支持重载;

对象的字面量赋值

在TypeScript中,对象字面量赋值,也称结构化赋值,是根据属性名称进行的,和类中属性声明顺序位置不相关;对于嵌套的对象结构,可以采用对应的嵌套解构赋值语法来操作;

对象字面量赋值的时候,会进行严格的属性类型检查,所有属性不能多也不能少,且类型还要一一对应;而把对象变量作为一个整体,进行赋值操作时,只会对这个对象变量的类型进行兼容性检查;所谓兼容性检查,就是对象变量b赋值给对象变量a时,会检测对象变量b中的属性是否都涵盖了对象变量a中所有的属性,如果是,那就是兼容的;换句话说就是,对象变量b里的属性至少要包含对象变量a的所有属性,且允许对象变量b里有其他的属性,这样把对象b赋值给对象a才是正确的;

存取器

在TypeScript中,存取器分为获取器(getter)和设置器(setter),其作用是对类中属性访问或者修改会自动触发对应获取器或者设置器方法的调用;常常用在对象属性的数据读写跟踪上,或者对属性读取或者赋值时,需要额外的逻辑操作上;

通过在类中方法名称之前,设置关键字get和set,就可以标注该方法是获取器还是设置器,同时该方法的名称就可以看做是一个属性来进行读取或者赋值,而该方法内的实现,就是对需要属性的进行读写逻辑过程;

如果类中的属性只需要简单的读取或者赋值,最好不要设置获取器或者设置器,以免徒增类的复杂度和无效操作;

如果针对某个属性,只实现获取器,而不实现设置器,那么这个属性针对获取器方法名称来说,就是只读的,无法进行赋值操作;(但对于这个属性本身来说,是不受影响的)

注意,获取器和设置器的方法必须具有相同的可见性,要么都是public,那么都是private等等;

如果设置器的方法没有传入参数,就会退化成一个获取器;

类型修饰

类型修饰符一共有三种,分别为:访问修饰符只读修饰符静态修饰符;

三类修饰类型可以同时修饰一个属性,但要注意修饰的先后顺序,即修饰关键字的前后顺序是不能随意放置的,必须按照访问静态只读的依次优先顺序ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值