1. 程式人生 > 其它 >TypeScript快速上手學習筆記-第十篇——屬性

TypeScript快速上手學習筆記-第十篇——屬性

技術標籤:TypeScript前端程式設計javascripttypescript前端

一、 public

public修飾屬性可以是屬性在任意位置訪問(修改)預設值

class Person {
  // public修飾屬性可以是屬性在任意位置訪問(修改)預設值
  public _name:string;
  
  constructor(name:string){
    this._name=name;
  }
}
let per=new Person("ts");
console.log(per);
console.log(per._name);
per._name=
"js"; console.log(per._name);

在這裡插入圖片描述

二、private

private私有屬性,只能在類的內部進行訪問(修改),但是可以在類中新增方法是私有屬性可以在外被訪問

class Person {
  // private私有屬性,只能在類的內部進行訪問(修改),但是可以在類中新增方法是私有屬性可以在外被訪問
  private _name:string;
  constructor(name:string){
    this._name=name;
  }
}
let per=new Person("ts");
console.log
(per); console.log(per._name);//報錯 per._name="js";//報錯 console.log(per._name);//報錯

會因為無法外部訪問修改而報錯。
在這裡插入圖片描述

但是可以在類中定義方法是私有屬性可以外部訪問修改,即setter,getter方法。

class Person {
  // private私有屬性,只能在類的內部進行訪問(修改),但是可以在類中新增方法是私有屬性可以在外被訪問
  private _name:string;
  constructor(name:string){
    this._name=name;
  }

  setName
(name:string){ this._name=name; } getName(){ return this._name; } } let per=new Person("ts"); console.log(per); console.log(per.getName()) per.setName("js") console.log(per.getName())

在這裡插入圖片描述
當然TS裡有自帶的setter,getter方法,可以讓操作過程請傾向於屬性

class Person {
  // private私有屬性,只能在類的內部進行訪問(修改),但是可以在類中新增方法是私有屬性可以在外被訪問
  private _name:string;
  constructor(name:string){
    this._name=name;
  }

  get name():string{
    return this._name;
  }
  set name(name:string){
    this._name=name;
  }
}
let per=new Person("ts");
console.log(per);
console.log(per.name);
per.name="js";
console.log(per.name);

在這裡插入圖片描述

三、protected

受繼承的影響只能在類本身或者子類中訪問和修改

class Man{
  protected name:string;
  constructor(name:string){
    this.name=name;
  }
  out(){
    console.log(this.name)
  }
}
let m=new Man("ds");
m.out();
class Min extends Man{
  
}

let min=new Min("min");
min.out();
console.log(m.name);//報錯
console.log(min.name);//報錯

在這裡插入圖片描述

四、constructor簡易寫法

constructor(public name:string){
}

相當於

public name:string;
constructor(name:string){
  this.name=name;
}