前面我们说到的是成员属性和方法都是实例对象的,但有的时候,我们需要给类本身添加成员,区分某成员是静态还是实力的:
- 该成员属性或方法是类型的特征还是实例化的特征
- 如果一个成员方法中没有使用或者依赖this,那么该方法就是静态的
type AllowFileTypesList = 'jpg' | 'png' | 'gif' | 'jepg' | 'webp';
class User1 {
//static 必须写在readobly前面
static readonly ALLOW_FILE_TYPES_LIST : Array<AllowFileTypesList> = ['jpg','png','gif','jepg','webp'];
constructor(
name: string,
id: number,
private _allowFileTypes: Array<AllowFileTypesList>
) {
}
//如果类的方法中没有用到this关键字,那么可以把方法定义为静态方法
static info():void{
// 类的静态成员都是用过 类名.静态成员 来访问
console.log(User1.ALLOW_FILE_TYPES_LIST)
}
get allowFileType():string[]{
return this._allowFileTypes
}
}
let u = new User1('thia',1,['jpg','png']);
console.log(u.allowFileType);
//静态方法通过 类名.方法名 调用
User1.info()