Ted's Codding study

Static 키워드 본문

TypeScript

Static 키워드

Ted93 2024. 6. 29. 17:30

1. 정적(Static) 메소드와 프로퍼티

1-1) 정의

  • 클래스 인스턴스가 아닌 클래스 자체에 바인딩된 메소드와 프로퍼티
  • 인스턴스 없이도 클래스 이름을 통해 직접 접근하고 호출 가능

 

1-2) 바인딩(binding)

  • 프로그램에 사용된 구성 요소의 실제 값 또는 프로퍼티를 결정짓는 행위
  • 주의 사항
    • static 멤버(메소드와 속성)는 인스턴스와 독립적이기 때문에
    • static 메소드 내에서는 this 키워드를 사용하여 접근 할 수 X
    • 인스턴스별로 데이터를 유지할 필요가 없는 공통 기능 및 데이터에 적합

 

1-3) 사용방법

  • static 키워드를 사용하여 정의'
class Circle {
  static pi: number = 3.14;

  static calculateArea(radius: number): number {
    // 정적 메서드와 속성 호출 방법
    // - 클래스명.속성
    // - 클래스명.메서드()
    return Circle.pi * radius * radius;
  }
}

console.log(Circle.pi); // 3.14
console.log(Circle.calculateArea(5)); // 78.5
console.log(Circle.calculateArea(10)); // 314

 

2. 접근자(Getter / Setter)

2-1) 정의

  • getter: 클래스의 특정 프로퍼티 값을 읽을 때 사용되는 메소드
  • setter: 클래스의 특정 프로퍼티 값을 설정할 때 사용되는 메소드
  • getter와 setter가 필요한 이유는 아래 코드로 설명
class Person {
  private name: string;

  constructor(name: string) {
    this.name = name;
  }
}
let person1 = new Person('테드');
// 아래 코드는 name앞에 private을 public으로 수정해야만 사용 가능
// console.log(person1.name); // 테드
// person1.name = '찰리';
// console.log(person1.name); // 찰리

 

2-2) 사용 방법

  • get과 set 키워드를 사용하여 정의
  • 속성 값의 유효성 검사, 계산된 프로퍼티 등에 사용
  • 데이터를 보다 안전하게 관리
  • 복잡한 로직을 캡슐화 → 클래스 외부에는 간단한 인터페이스만 제공 가능
class Employee {
  private _fullName: string = '';

  // private 멤버 변수에 접근하여 반환하는 getter
  get getFullName(): string {
    return this._fullName;
  }

  // private 멤버 변수에 접근하여 설정하는 setter
  set setFullName(newName: string) {
    if (newName.length > 0) {
      this._fullName = newName;
    } else {
      console.log('Error: name cannot be empty');
    }
  }
}

// 접근자 메서드는 () 소괄호 없이 사용 가능
let emp1 = new Employee();
emp1.setFullName = 'Ted'; // setter에 대한 사용법
let name = emp1.getFullName; // getter에 대한 사용법
console.log(name); // Ted

 

 

노션으로 보고 싶다면?

https://short-echidna-b16.notion.site/Static-8649eb0a675b40008c48709e89c8d32a?pvs=4

 

Static 키워드 | Notion

목차

short-echidna-b16.notion.site