类实际上就是对象的模型,我们可以通过类去创建这个对象
类就是定义了这个对象长什么样子
对象实际包含了俩个部分:
- 一个是属性
- 一个是方法
TS里面的类和JS里面的类其实是大同小异的
tsconfig.json
{
"compilerOptions": {
"target": "ES6",
"module": "ES6",
"strict": true,
"outDir": "./dist"
},
"include": ["./src/**/*"],
"exclude": ["node_modules"],
}
index.ts
//使用class关键字来定义一个类
class Person{
}
实际上这个类就可以使用了
//使用class关键字来定义一个类
class Person{
}
const a = new Person()
console.log(a)
定义类:
class 类名{
属性名:类型
}
实例属性
//使用class关键字来定义一个类
/*
对象中主要包含了俩个部分:
一部分:属性
一部分:方法
*/
class Person{
//定义实例属性
name: string = '我';//对象中有一属性,属性名叫做name
age: number = 18;//对象中有一属性,属性名叫做age
}
const a = new Person()
console.log(a)
console.log(a.name)
这就是我们定义的俩个属性
这种属性我们叫做实例属性
这个属性实际上是存放到person实例的,你只有new Person
了以后才能看到这些属性,通过实例(a).属性名
去访问到的属性
类属性
类属性怎么访问?
通过类直接访问
比如:
Person.age
能这么访问,这种属性就是类属性(或者说是静态属性)
怎么去定义类属性?
在属性前使用
static
关键字定义类属性(静态属性)
这种属性不需要创建对象就可以直接用的属性
class Person{
//定义属性
name: string = '我';//对象中有一属性,属性名叫做name
age: number = 18;//对象中有一属性,属性名叫做age
static sex:boolean = true;
}
const a = new Person()
console.log(a)
console.log(a.name)
console.log(a.sex)
会报错,因为实例对象里面没有sex
属性
既然是静态属性,我们要通过类去访问:
class Person{
//定义属性
name: string = '我';//对象中有一属性,属性名叫做name
age: number = 18;//对象中有一属性,属性名叫做age
static sex:boolean = true
}
const a = new Person()
console.log(a)
console.log(a.name)
console.log(Person.sex)
只读属性(readonly)
我们一般可以:
class Person{
//定义属性
name: string = '我';//对象中有一属性,属性名叫做name
age: number = 18;//对象中有一属性,属性名叫做age
static sex:boolean = true
}
const a = new Person()
console.log(a)
console.log(a.name)
a.name = "tom"
console.log(a.name)
如果我们在属性前面加了readonly
这个属性就只能看不能改了
实例属性的readonly
class Person{
readonly name: string = '我';
}
类属性(静态属性)使用readonly
class Person{
readonly sex:boolean = true
}
没有特殊情况readonly
一般用不上
定义方法
class Person{
//定义方法
sayHello(){
}
}
里面就可以写你的方法
直接写的就表示这是实例方法或属性
class Person{
//定义方法
sayHello(){
console.log('hello ts');
}
}
const a = new Person()
a.sayHello();//调用方法
如果是静态方法
class Person{
//定义方法
static sayHello(){
console.log('hello ts');
}
}
Person.sayHello();//调用方法