[typescript] 정적 메서드와 인스턴스 메서드에서의 this 참조
정적 메서드와 인스턴스 메서드란?
정적 메서드(static method) 와 인스턴스 메서드(instance method) 는 TypeScript 및 다른 프로그래밍 언어에서 사용되는 중요한 두 가지 메서드 유형입니다.
- 정적 메서드: 클래스에 속한 메서드로, 클래스의 인스턴스를 생성하지 않고 직접 호출할 수 있습니다.
- 인스턴스 메서드: 클래스의 인스턴스에 속한 메서드로, 인스턴스를 생성한 후에만 호출할 수 있습니다.
정적 메서드에서의 this 참조
정적 메서드 내부에서 this 키워드를 사용할 때, 해당 this는 클래스 자체를 가리킵니다. 즉, 인스턴스가 아닌 클래스 자체에 대한 참조가 됩니다.
아래 TypeScript 코드는 이를 설명합니다.
class Calculator {
static add(x: number, y: number) {
return x + y;
}
}
console.log(Calculator.add(5, 3)); // 출력 결과: 8
위 예제에서 add 메서드 내부에서의 this는 Calculator 클래스를 가리키게 됩니다.
인스턴스 메서드에서의 this 참조
반면, 인스턴스 메서드 내부에서의 this 키워드는 해당 메서드가 속한 인스턴스를 참조합니다.
다음은 이를 보여주는 TypeScript 예제입니다.
class Greeting {
name: string;
constructor(name: string) {
this.name = name;
}
sayHello() {
console.log(`Hello, ${this.name}!`);
}
}
const greeting = new Greeting("Alice");
greeting.sayHello(); // 출력 결과: Hello, Alice!
위 예제에서 sayHello 메서드 내부에서의 this는 greeting 인스턴스를 가리키게 됩니다.
결론
정적 메서드와 인스턴스 메서드는 각각 클래스와 인스턴스에 속한 메서드로, 각각의 메서드 내부에서 this가 가리키는 대상이 다릅니다. 이러한 특징을 이해하고 활용하여 TypeScript나 다른 언어로 프로그래밍할 때 유용하게 활용할 수 있습니다.