クラス-2


getter setter


privateプロパティを持つクラスにインスタンスを作成します.
インスタンス전체にはアクセスできますが、インスタンス속성にはアクセスできません.
class Person {
  constructor(private name:string,private age : number) {}
}
const user1 = new Person("Tim",20);
console.log(user1);        //  { name: 'Tim', age: 20 }
console.log(user1.name);  // 오류 'name' 속성은 private이며 'Person' 클래스 내에서만 액세스할 수 있습니다.
ゲストとゲストを使用すると、プライベートを維持しながらアクセスできます.get-パラメータを持たない関数は、プログラムを読み込むときに役立ちますset–propertyに値を書き込むときに呼び出される引数関数
getのnameとprivateのnameは重複しているので、一方を変える必要があります.
開発者は、デフォルトのプロパティ値を_이름に変更しました.
class Person {
  constructor(private _name:string,private age : number) {}    // _name

  get name():string{
    return this._name
  }
}
const user1 = new Person("Tim",20);
const a = user1.name
console.log(a);              // Tim
set Propertyに値を入力するために使用
class Person {
  constructor(private _name:string,private age : number) {}

  set name(value:string){
    this._name = value
  }
}
const user1 = new Person("Tim",20);

user1.name= "Elon"
console.log(user1);        // { _name: 'Elon', age: 20 }

readonly


readonlyを使用すると、publicでも外部に置き換えることはできません.
class Person {
public readonly name:string = "Tim"
}

const user1 = new Person()
user1.name = "hello"            //   오류
変更できるのは、宣言または作成者の内部のみです.
class Person {
  readonly name:string = "Tim"
   constructor(name:string){          
    this.name = name;             
}
  }
  const user1 = new Person("hello")
  console.log(user1.name);              // hello

Index Signatures in class


インタフェースIndex Signaturesと同様に、固定フォーマットなしで任意に追加する方法である.
class Person{
  [index:string]:'A'|'B'|'C'
}
const a = new Person
a.Alice = "A"
a.Mark = "B"
a.Tim = "C" 
console.log(a);    // { Alice: 'A', Mark: 'B', Tim: 'C' }

static


クラスのプロパティまたは関数を呼び出すには、new 연산자を使用します.
インスタンスを作成したら、インスタンスからロードします.
ただし、staticを使用してクラス自体からロードすることができる.
class Person {
static Country:string = "Korea"
}
console.log(Person.Country);   // Korea
関数にも使用可能
class Person {
 static hello(){
    console.log("안녕하세요");
  }
}
Person.hello();  // 안녕하세요
プライベートでは外部からアクセスできませんが、内部では使用できます.
class Person {
private static Country:string = "Korea"
 static hello(){
    console.log("안녕하세요 " + Person.Country);
  }
}
Person.hello();        // 안녕하세요 korea
静的静的静的静的はインスタンス間で共有されます.
したがって、関数によるスタックプロパティの変更は、他のインスタンスにも影響します.
class Person {
 static Country:string = "Korea"
  hello(){
    console.log("안녕하세요 " + Person.Country);
  }
  change(){
    Person.Country = "USA"
  }
}
const user1 = new Person;
const user2 = new Person;

user2.hello();          // 안녕하세요 Korea
user1.change();         // user1 의 함수를 실행
user2.hello();          // 안녕하세요 USA  

abstract


抽象クラスabstractを作成するために使用されます.abstract classが完全に実装されていない場合、サブクラスで正しく実装される.
abstract class Person{
protected  abstract name:string ;
 abstract hello():void;
}
要約を添付しない属性と方法がある場合は、このセクションを実装する必要があります.
次に、継承を使用してサブクラスですべての操作を実行します.
abstract class Person{
protected  abstract name:string ;
 abstract hello():void;
}

class User extends Person {
  protected name: string="Tim"     // protected 는 자식클래스에서 접근 가능
  hello(): void {
    console.log("안녕하세요 " + this.name);
  }
}
const a = new User()
a.hello()                     // 안녕하세요 Tim
すなわち,抽象的に完璧に実施されていなくても,誤りは起こらない.
サブクラスの継承と利用のために作成されます.