一、TypeScript-类
-
类的定义
// 类的定义 class Person4Class { name = "dell"; getName() { return this.name; } } // 构建类的实例 const person4Class = new Person4Class(); // 调用类的方法 console.log(person4Class.getName());
-
类的继承
// 继承Person4Class class Teacher4Class extends Person4Class { // 新增teach方法 teach() { console.log("do something...."); } }
-
类的重写
class Teacher4Class extends Person4Class { getName() { return "张三"; } teach() { console.log("do something...."); } } const teacher4Class = new Teacher4Class(); teacher4Class.teach(); console.log(teacher4Class.getName());
-
调用父类方法,super
class Teacher4Class extends Person4Class { getName() { // 调用父类的实现 return super.getName(); } teach() { console.log("do something...."); } } const teacher4Class = new Teacher4Class(); teacher4Class.teach(); console.log(teacher4Class.getName());
二、类和接口的区别
- 类中可以有初始化操作,接口不可以有初始化的操作。
- 定义类,常常用来描述某一具体的事物,定义接口,只是为了给编码约束了规范。
三、类的访问类型
- private
- 只允许在类的内部被调用
- protected
- 允许在类的内部及继承的子类中使用
- public
- 允许在类的内外都可以被调用
- 如果什么都不写,默认是public
四、构造器-constructor
-
默认的无参构造器是会被自动执行的。
-
构造有参构造器
-
方式一:传统写法
class Person4Constructor { public name: string; constructor(name: string) { this.name = name; } } const person4Constructor = new Person4Constructor("zhangsan"); console.log(person4Constructor.name);
-
方式二:简写方式
class Person4Constructor { constructor(public name: string) { } } const person4Constructor = new Person4Constructor("zhangsan"); console.log(person4Constructor.name);
-
-
继承下的构造器
class Person4Constructor { constructor(public name: string) {} } const person4Constructor = new Person4Constructor("zhangsan"); console.log(person4Constructor.name); class Teacher4Constructor extends Person4Constructor { constructor() { super("lisi"); } } const teacher4Constructor = new Teacher4Constructor(); console.log(teacher4Constructor.name);
- 如果子类继承父类,子类需要有自己的构造器的话,必须手动的调用父类的构造器,否则报错。
- 一个类中不可以存在多个构造器,有且只能有一个,这点跟其他后端语言倒是有很大区别。