想要创建对象,必须要先定义类,所谓的类可以理解为对象的模型,程序中可以根据类创建所指定类型的对象。
一、使用class关键字定义类
class 类名 { }
// 使用class关键字来定义一个类
class Person{}// 使用new关键字创建一个对象
const per = new Person();
console.log(per);
二、定义属性
(一)定义实例属性
直接定义的属性是实例属性,需要通过对象的实例去访问
属性名 : 数据类型 = 属性值; // 数据类型可以省略
class Person{// 直接定义的属性是实例属性,需要通过对象的实例去访问name: string = "寻霖";
}const per = new Person();
console.log(per.name); // 寻霖
(二)定义静态属性
使用static关键字开头的属性是静态属性
静态属性可以直接通过类去访问,不可以通过实例对象去访问
static 属性名 : 数据类型 = 属性值; // 数据类型可以省略
class Person{// 使用static关键字开头的属性是静态属性// 可以直接通过类去访问,不可以通过实例对象去访问static age: number = 18;
}console.log(Person.age); // 18
const per = new Person();
console.log(per.age); // 报错:属性“age”在类型“Person”上不存在
(三)设置属性只读
在属性名前加一个readonly关键字表示一个只读的属性不可修改
readonly 属性名 : 数据类型 = 属性值;
static readonly 属性名 : 数据类型 = 属性值;
在不设置readonly的情况下我们可以修改实例对象中的属性值
class Person{name: string = "寻霖";
}const per = new Person();
console.log(per.name); // 寻霖
per.name = "XunLin";
console.log(per.name); // XunLin
设置了过后就不能够修改属性值,不论是实例属性还是静态属性
三、定义方法
(一)定义实例方法
直接定义的方法是实例方法,需要通过对象的实例去访问
方法名 () { //方法体... }
class Person{// 直接定义的方法是实例方法,需要通过对象的实例去访问sayHello() {console.log("hello");}
}const per = new Person();
per.sayHello(); // hello
(二)定义静态方法
使用static关键字开头的方法是静态方法
静态方法可以直接通过类去访问,不可以通过实例对象去访问
static 方法名 () { //方法体... }
class Person{// 使用static关键字开头的方法是静态方法// 静态方法可以直接通过类去访问,不可以通过实例对象去访问static sayHello() {console.log("hello");}
}Person.sayHello(); // hello
const per = new Person();
per.sayHello(); // 报错:属性“sayHello”在类型“Person”上不存在。