开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第12天,点击查看活动详情
前言
TypeScript 是面向对象的 JavaScript。
类描述了所创建的对象共同的属性和方法。
TypeScript 支持面向对象的所有特性,比如 类、接口等。
TypeScript 类定义方式如下:
class class_name {
// 类作用域
}
定义类的关键字为 class,后面紧跟类名,类可以包含以下几个模块(类的数据成员):
-
字段 − 字段是类里面声明的变量。字段表示对象的有关数据。
-
构造函数 − 类实例化时调用,可以为类的对象分配内存。
-
方法 − 方法为对象要执行的操作。
export default {}
//类的基本使用
class Person{
//字段(属性)
name:string
age:number
// 构造函数
constructor(name:string,age:number){
this.name=name
this.age =age
}
//函数(方法)
sayHello():void{
console.log(`我的男神是${this.name},他${this.age}了`);
}
}
// 实例化类
let p = new Person("国超",30)
p.sayHello()
类的继承
TypeScript 支持继承类,即我们可以在创建类的时候继承一个已存在的类,这个已存在的类称为父类,继承它的类称为子类。
类继承使用关键字 extends,子类除了不能继承父类的私有成员(方法和属性)和构造函数,其他的都可以继承。
TypeScript 一次只能继承一个类,不支持继承多个类,但 TypeScript 支持多重继承(A 继承 B,B 继承 C)。
语法格式如下:
class child_class_name extends parent_class_name
示例代码如下:
export default{}
class Person{
//字段(属性)
name:string
age:number
// 构造函数
constructor(name:string,age:number){
this.name=name
this.age =age
}
//函数(方法)
sayHello():void{
console.log(`我的男神是${this.name},他${this.age}了`);
}
}
/*
// 实例化类
let p = new Person("国超",30)
p.sayHello()
*/
// 子承父类
class Student extends Person{
stap:string
constructor(name:string,age:number,stap:string){
super(name,age)
this.stap=stap;
}
sayHello():void{
//调用父类中的办法
super.sayHello();
console.log(`我是${this.name},我${this.age}了,我的成绩是${this.stap}`);
}
}
let s = new Student("国超",30,"A")
s.sayHello()
访问控制修饰符
TypeScript 中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。TypeScript 支持 3 种不同的访问权限。
-
public(默认): 公有,可以在任何地方被访问。
-
protected: 受保护,可以被其自身以及其子类访问。
-
private: 私有,只能被其定义所在的类访问。
以下实例定义了两个变量 str1 和 str2,str1 为 public,str2 为 private,实例化后可以访问 str1,如果要访问 str2 则会编译错误。
class Encapsulate {
str1:string = "hello"
private str2:string = "world"
}
var obj = new Encapsulate()
console.log(obj.str1) // 可访问
console.log(obj.str2) // 编译错误, str2 是私有的