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