간단한 예제를 통한 TypeScript 클래스 사용 방법
TypeScript는 JavaScript에 강력한 기능을 제공하는데, 여기에는 객체 지향 프로그래밍을 가능하게 하는 클래스 개념이 포함됩니다. 클래스는 객체를 만들고, 데이터를 캡슐화하고, 동작을 정의하기 위한 청사진을 제공합니다. 이 가이드에서는 간단한 예제를 통해 TypeScript 클래스의 기본 사항을 안내합니다.
클래스란 무엇인가요?
클래스는 미리 정의된 속성과 메서드로 객체를 만드는 청사진입니다. 코드 구성, 재사용성 촉진, 확장 가능한 애플리케이션 생성에 도움이 됩니다. TypeScript의 클래스는 다른 객체 지향 프로그래밍 언어의 클래스와 비슷하게 작동합니다.
기본 클래스 정의
TypeScript에서 클래스를 정의하려면 class
키워드 뒤에 클래스 이름과 속성 및 메서드를 포함하는 중괄호를 사용합니다.
기본 클래스 예제
속성과 메서드가 있는 간단한 Person
클래스의 예는 다음과 같습니다.
class Person {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
greet(): void {
console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
}
}
const person1 = new Person("Alice", 30);
person1.greet(); // Output: Hello, my name is Alice and I am 30 years old.
이 예에서 Person
클래스에는 name
및 age
라는 두 가지 속성이 있습니다. 생성자 메서드는 이러한 속성을 초기화하고 greet
메서드는 인사 메시지를 출력합니다.
접근 수정자
TypeScript는 클래스 멤버의 가시성을 제어하기 위해 세 가지 액세스 수정자를 제공합니다.
public
: 멤버는 어디서나 접근 가능(기본값).private
: 멤버는 클래스 내에서만 접근 가능합니다.protected
: 멤버는 클래스와 하위 클래스 내에서 접근 가능합니다.
액세스 수정자 사용
TypeScript 클래스에서 액세스 수정자를 사용하는 방법은 다음과 같습니다.
class Animal {
public name: string;
private age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
public getAge(): number {
return this.age;
}
}
const dog = new Animal("Buddy", 5);
console.log(dog.name); // Output: Buddy
console.log(dog.getAge()); // Output: 5
// console.log(dog.age); // Error: 'age' is private and only accessible within class 'Animal'.
이 예에서 name
는 클래스 외부에서 접근할 수 있는 공개 속성이고, age
는 클래스 내에서만 접근할 수 있는 비공개 속성입니다.
TypeScript에서의 상속
TypeScript는 상속을 지원하는데, 이를 통해 클래스는 다른 클래스로부터 속성과 메서드를 상속받을 수 있습니다. 이는 코드를 재사용하고 클래스 계층을 만드는 데 도움이 됩니다.
상속의 예
아래는 기본 클래스 Animal
에서 상속받은 클래스 Dog
의 예입니다.
class Animal {
constructor(public name: string) {}
makeSound(): void {
console.log(`${this.name} makes a sound.`);
}
}
class Dog extends Animal {
constructor(name: string) {
super(name); // Call the constructor of the base class
}
makeSound(): void {
console.log(`${this.name} barks.`);
}
}
const dog = new Dog("Buddy");
dog.makeSound(); // Output: Buddy barks.
이 예에서 Dog
클래스는 Animal
클래스를 확장하고 makeSound
메서드를 재정의합니다.
게터와 세터
TypeScript를 사용하면 속성에 대한 게터와 세터를 정의하여 클래스 멤버에 대한 제어된 액세스를 제공할 수 있습니다.
게터와 세터 예제
class Person {
private _name: string;
constructor(name: string) {
this._name = name;
}
get name(): string {
return this._name;
}
set name(newName: string) {
if (newName) {
this._name = newName;
} else {
console.log("Name cannot be empty.");
}
}
}
const person = new Person("Alice");
console.log(person.name); // Output: Alice
person.name = "Bob";
console.log(person.name); // Output: Bob
이 예제에서는 name
속성은 getter 및 setter 메서드를 사용하여 액세스하고 수정합니다.
결론
TypeScript 클래스는 객체 지향 코드를 깔끔하고 효율적으로 작성하는 강력한 방법입니다. 속성, 메서드, 액세스 수정자, 상속 등을 정의하는 체계적인 방법을 제공합니다. TypeScript 클래스를 사용하는 방법을 이해하면 애플리케이션에 대해 보다 견고하고 유지 관리하기 쉬운 코드를 작성할 수 있습니다.