TS中的类
面向对象思想
- 使用属性列表描述类中的属性
class User {
name: string
age: number
constructor(name: string, age: number){
this.name = name;
this.age = age;
}
}
如果不写构造函数或者构造函数中没有写全初始化属性,则name和age类型为undefined
- 属性的初始化检查
可以使用"strictPropertyInitialization": true配置,严格检查属性的初始化。
初始化检查位置:构造函数中、属性默认值
属性默认值的方式有两种:
//第一种
class User {
name: string = 'kevin'
age: number = 109
}
//第二种
constructor(name: string = 'kevin', age: number = 109){
this.name = name;
this.age = age;
}
-
属性可以是可选的
适用于可以为空的数据
class User {
name: string = 'kevin'
age: number = 109
pid?: string
}
- 属性可以修饰为只读的
class User {
readonly id: number
name: string
age: number
pid?: string
constructor(name: string, age: number){
this.id = Math.random();
this.name = name;
this.age = age;
}
}
-
属性可以使用访问修饰符
- public:默认的访问修饰符,公开的,所有代码均可访问
- private:私有的
- protect
-
属性简写
如果某个属性通过构造函数传递,不经过处理直接赋值。则可以写为
class User {
constructor(public name: string, public age: number){
this.id = Math.random();
}
}
访问器
用于控制属性的读取
class User {
constructor(public name: string,private _age: number){
this.id = Math.random();
}
get age(){
return this._age;
}
set age(value: number){
if(value < 0){
this._age = 0;
} else if(age > 00){
this._age = 100;
}else {
this._age = value;
}
return this._age;
}
}