1.概述
类这个概念基本是所有面向对象编程语言都具有一个概念,例如Java 、Python 等;在JavaScript 中ES6 之前是没有类这个概念的,对于熟悉面向对象来程序猿来说有些棘手,因为他们用的都是基于类的继承,对象也是通过类创建出来的。在ES6中添加了类这个概念,虽然只是一个语法糖,但是这就可以让程序员基于类去进行操作了。在TS中也是支持类这个概念的。
2.定义一个简单的类
在TS中也是使用class关键字来定义一个类,示例代码如下: ;(function () { // 定义类 class Person { // 公共属性,默认可以不写 public name: string // 构造函数 constructor(name: string) { // 初始化name属性 this.name = name } } // 实例化类 const person = new Person('一碗周') console.log(person.name) // 一碗周})() 上面定义的那个类中具有一个构造函数和一个公共属性name,在类实例化时调用了constructor构造函数,调用对功能属性进行初始化。 上面的写法还有一种简写形式,如下所示: ;(function () { class Person { constructor(public name: string) {} } // 实例化类 const person = new Person('一碗周') console.log(person.name) // 一碗周})() 这个写法等同于上面那个写法。
3.继承
在面向对象的编程语言中,有一个重要得特征就是继承。继承就是基于某个类来扩展现有的类。 例如,爸爸在北京有一个四合院,儿子可以继承爸爸的四合院,而且还可以自己去买一栋别墅;最终儿子的房产拥有北京的四合院和一栋别墅。 在TS中继承使用extends关键字,示例代码如下: ;(function () { // 定义一个基类,又称超类 class Person { // 在基类中定义一个name属性 constructor(public name: string) {} } // 定义一个派生类,又称子类,继承于基类 class Programmer extends Person { constructor(name: string, public hobby: string) { // 通过 super 调用基类的构造函数 super(name) } } // 实例化子类 const programmer = new Programmer('一碗周', 'coding') console.log(programmer.name, programmer.hobby) // 一碗周 coding})() 如上示例代码中,Person 称作基类 ,或者称超类 ,Programmer 是一个派生类 ,或者称子类 。 在上面那个例子中,Programmer 类通过extends 关键字继承于Person 类。子类拥有父类全部的属性和方法。 在子类的构造函数中,我们必须调用super() 方法来执行基类的构造函数,这个是必须的。 类的继承不仅可以继承类,而且还可以在子类重写父类的属性或者方法。实例代码如下: // 定义一个 Person类class Person { constructor(public name: string) {} // 定义一个方法 sayMy() { console.log(`我的名字: ${this.name}`) }}// 定义一个 Adult 类继承于 Person 类class Adult extends Person { constructor(public age: number) { super('彼岸繁 下载地址: TypeScript接口介绍 TypeScript联合类型,交叉类型和类型保护 |