类 - 访问器

属性

使用属性列表来描述类中的属性。

属性的初始化检查

strictPropertyInitialization : true

属性初始化位置:

  1. 构造函数中
  2. 属性默认值

属性可以修饰为可选的

属性可以修饰为只读的

使用访问修饰符

访问修饰符可以控制类中的某个成员的访问权限。

  • public : 默认的访问修饰符,公开的,所有代码均可访问。
  • private : 私有的,只有在类中可以访问

属性简写

如果某个属性,通过构造函数的参数传递,并不做任何处理的赋值该属性,可以进行缩写。

  1. class User {
  2. public name : string;
  3. public age : number;
  4. pender : "男" | "女" = "男"; // 设置默认值。
  5. pid ?: string; // 设置可选属性
  6. readonly id : number; // 不可改变
  7. private publishNumber : number = 3; // 每天可以发送的文章数
  8. private curNumber : number = 0; // 每天已发送的次数
  9. constructor(name : string, age : number){
  10. this.id = Math.random();
  11. this.name = name ;
  12. this.age = age;
  13. }
  14. publish(title : string){
  15. if(this.curNumber < this.publishNumber){
  16. console.log("发布一篇文章:"+ title);
  17. this.curNumber ++;
  18. } else {
  19. console.log("抱歉!今日发布已上限!");
  20. }
  21. }
  22. }
  23. const u = new User("AYuWei",21);
  24. u.publish("赵云");
  25. u.publish("韩信");
  26. u.publish("张三");
  27. u.publish("李四");
  28. u.publish("张飞");

也可以简写为属性缩写方式

  1. class User {
  2. pender : "男" | "女" = "男"; // 设置默认值。
  3. pid ?: string; // 设置可选属性
  4. readonly id : number; // 不可改变
  5. private publishNumber : number = 3; // 每天可以发送的文章数
  6. private curNumber : number = 0; // 每天已发送的次数
  7. constructor(public name : string,public age : number){
  8. this.id = Math.random();
  9. }
  10. publish(title : string){
  11. if(this.curNumber < this.publishNumber){
  12. console.log("发布一篇文章:"+ title);
  13. this.curNumber ++;
  14. } else {
  15. console.log("抱歉!今日发布已上限!");
  16. }
  17. }
  18. }
  19. const u = new User("AYuWei",21);
  20. u.publish("赵云");
  21. u.publish("韩信");
  22. u.publish("张三");
  23. u.publish("李四");
  24. u.publish("张飞");

访问器

  1. let passcode = "secret passcode";
  2. class Employee {
  3. private _fullName : string;
  4. get fullName() : string {
  5. console.log("get");
  6. return this._fullName;
  7. }
  8. set fullName(newName : string) {
  9. console.log("set");
  10. if( passcode && passcode == "secret passcode" ){
  11. this._fullName = newName;
  12. } else {
  13. console.log("Error")
  14. }
  15. }
  16. }
  17. let employee = new Employee();
  18. employee.fullName = "Bob Smith";
  19. console.log(employee.fullName);
  20. /**
  21. * 输出执行顺序
  22. * set
  23. * get
  24. * Bob Smith
  25. */