타입스크립트에서 클래스의 사용법은 무엇인가요?
_____A1: 클래스는 객체지향 프로그래밍에서 사용하는 템플릿으로, 속성(properties)과 메서드(methods)를 가지며 인스턴스를 생성하는 데 사용됩니다. 타입스크립트는 자바스크립트의 클래스 문법을 확장하여 타입을 지정할 수 있게 합니다.
Q2: 타입스크립트에서 클래스는 어떻게 정의하나요?
A2: `class` 키워드를 사용하여 클래스를 정의합니다. 예:
```typescript
class Person {
name: string;
constructor(name: string) {
this.name = name;
}
greet(): void {
console.log(`Hello, my name is ${this.name}`);
}
}
```
Q3: 생성자(Constructor)란 무엇이고 어떻게 사용하나요?
A3: 생성자는 클래스의 인스턴스를 만들 때 호출되는 특수 메서드입니다. 주로 인스턴스 속성을 초기화하는 데 사용합니다. 타입스크립트에서는 `constructor` 키워드를 사용합니다.
Q4: 클래스 속성에 타입을 어떻게 지정하나요?
A4: 속성명 뒤에 콜론(`:`)과 타입을 적어 타입을 지정합니다. 예:
```typescript
class Car {
make: string;
year: number;
}
```
Q5: 메서드에 타입을 지정하는 방법은?
A5: 매개변수와 반환값에 타입을 지정합니다. 예:
```typescript
drive(distance: number): void {
console.log(`Driving ${distance} km`);
}
```
Q6: 접근 제한자는 어떤 것이 있나요?
A6: `public`(기본값), `private`, `protected`가 있습니다.
- `public`: 어디서나 접근 가능
- `private`: 클래스 내부에서만 접근 가능
- `protected`: 클래스와 이를 상속받은 자식 클래스에서 접근 가능
Q7: 생성자 매개변수에서 바로 속성을 선언할 수 있나요?
A7: 네, 접근 제한자와 타입을 매개변수 앞에 붙이면 자동으로 클래스 속성으로 선언됩니다. 예:
```typescript
class Point {
constructor(public x: number, public y: number) {}
}
```
Q8: 클래스 상속은 어떻게 하나요?
```typescript
class Animal {
move(): void {
console.log("Moving...");
}
}
class Dog extends Animal {
bark(): void {
console.log("Woof!");
}
}
```
Q9: 오버라이딩은 어떻게 하나요?
A9: 상속받은 메서드를 자식 클래스에 같은 이름으로 작성하면 오버라이딩 됩니다. 부모 메서드를 호출하려면 `super`를 사용할 수 있습니다.
Q10: 정적 멤버(static)은 무엇인가요?
A10: 클래스 인스턴스가 아닌 클래스 자체에 속하는 멤버입니다. `static` 키워드로 선언합니다. 예:
```typescript
class MathUtil {
static PI = 3.14;
static square(x: number): number {
return x * x;
}
}
```
Q11: 추상 클래스는 무엇인가요?
A11: 직접 인스턴스를 만들 수 없고 자식 클래스에서 구현을 강제하는 `abstract` 키워드를 가진 클래스입니다. 추상 메서드는 메서드 서명만 정의하고 구현은 자식이 합니다.
Q12: 인터페이스와 클래스는 어떤 차이가 있나요?
A12: 인터페이스는 객체 구조를 정의하는 데 집중하며 코드가 없지만, 클래스는 실제 구현을 포함합니다. 클래스는 인터페이스를 `implements` 할 수 있습니다.
Q13: 클래스 사용 예제
```typescript
class User {
private name: string;
constructor(name: string) {
this.name = name;
}
public getName(): string {
return this.name;
}
}
const user = new User("Alice");
console.log(user.getName());
```
요약: 타입스크립트 클래스는 객체지향 프로그래밍을 지원하며, 속성과 메서드에 타입 지정, 접근 제한자, 상속, 추상화, 정적 멤버 등을 사용해 강력한 타입 안정성을 제공합니다.
타입스크립트에서 클래스는 객체 지향 프로그래밍(OOP)의 기본 개념 중 하나로, 객체를 생성하기 위한 청사진을 제공합니다.
클래스는 속성과 메서드를 정의할 수 있으며, 이를 통해 객체를 생성하고 관리할 수 있습니다.
클래스의 기본 구조 타입스크립트에서 클래스는 `class` 키워드를 사용하여 정의합니다.
기본적인 클래스 구조는 다음과 같습니다: ```typescript class Person { // 속성 정의 name: string; age: number; // 생성자 constructor(name: string, age: number) { this.name = name; this.age = age; } // 메서드 정의 greet() { console.log(`안녕하세요, 제 이름은 ${this.name}이고, 나이는 ${this.age}세입니다.
`); } } ``` 위의 예제에서 `Person` 클래스는 `name`과 `age`라는 두 개의 속성을 가지고 있으며, 생성자를 통해 이 속성들을 초기화합니다.
`greet` 메서드는 객체가 인사하는 기능을 수행합니다.
클래스 인스턴스 생성 클래스를 정의한 후, 해당 클래스를 기반으로 인스턴스를 생성할 수 있습니다.
인스턴스는 클래스의 구체적인 구현체로, 각 인스턴스는 고유한 속성 값을 가질 수 있습니다.
```typescript const person1 = new Person("홍길동", 30); const person2 = new Person("김철수", 2
5); person1.greet(); // 안녕하세요, 제 이름은 홍길동이고, 나이는 30세입니다.
person2.greet(); // 안녕하세요, 제 이름은 김철수이고, 나이는 25세입니다.
``` 접근 제어자 타입스크립트는 클래스의 속성과 메서드에 대해 접근 제어자를 지원합니다.
주요 접근 제어자는 `public`, `private`, `protected`입니다.
- `public`: 기본값이며, 클래스 외부에서도 접근할 수 있습니다.
- `private`: 해당 클래스 내부에서만 접근할 수 있습니다.
- `protected`: 해당 클래스와 상속받은 클래스에서만 접근할 수 있습니다.
```typescript class Animal { private species: string; protected age: number; constructor(species: string, age: number) { this.species = species; this.age = age; } public getSpecies(): string { return this.species; } } class Dog extends Animal { constructor(age: number) { super("개", age); } public bark() { console.log(`나는 ${this.age}세의 ${this.getSpecies()}입니다.
`); } } const dog = new Dog(
5); dog.bark(); // 나는 5세의 개입니다.
``` 상속 타입스크립트에서는 클래스 간의 상속을 통해 코드의 재사용성을 높일 수 있습니다.
`extends` 키워드를 사용하여 부모 클래스를 상속받을 수 있습니다.
```typescript class Vehicle { constructor(public brand: string) {} honk() { console.log("빵빵!"); } } class Car extends Vehicle { constructor(brand: string, public model: string) { super(brand); } displayInfo() { console.log(`차량 브랜드: ${this.brand}, 모델: ${this.model}`); } } const myCar = new Car("현대", "아반떼"); myCar.honk(); // 빵빵! myCar.displayInfo(); // 차량 브랜드: 현대, 모델: 아반떼 ``` 추상 클래스 추상 클래스는 직접 인스턴스를 생성할 수 없으며, 다른 클래스에서 상속받아 사용해야 합니다.
주로 공통된 속성과 메서드를 정의하고, 구체적인 구현은 자식 클래스에서 제공하도록 강제할 때 사용됩니다.
```typescript abstract class Shape { abstract area(): number; // 추상 메서드 displayArea() { console.log(`면적: ${this.area()}`); } } class Rectangle extends Shape { constructor(private width: number, private height: number) { super(); } area(): number { return this.width * this.height; } } const rectangle = new Rectangle(10,
5); rectangle.displayArea(); // 면적: 50 ``` 정적 메서드와 속성 정적 메서드와 속성은 클래스 인스턴스가 아닌 클래스 자체에 속합니다.
`static` 키워드를 사용하여 정의합니다.
```typescript class MathUtil { static add(x: number, y: number): number { return x + y; } } console.log(MathUtil.add(5,
10)); // 15 ``` 결론 타입스크립트에서 클래스는 객체 지향 프로그래밍의 핵심 개념을 구현할 수 있는 강력한 도구입니다.
클래스의 속성, 메서드, 접근 제어자, 상속, 추상 클래스 및 정적 메서드와 속성을 통해 복잡한 애플리케이션을 구조화하고 관리할 수 있습니다.
타입스크립트를 사용하면 코드의 가독성과 유지보수성을 높일 수 있으며, 타입 시스템 덕분에 런타임 오류를 줄일 수 있습니다.
작성자:
최지현 [비회원]
| 작성일자: 1년 전
2024-09-10 05:32:09
조회수: 146 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 146 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.