Ted's Codding study

생성자(Constructor) 본문

TypeScript

생성자(Constructor)

Ted93 2024. 6. 25. 15:48

1. 생성자

1-1) 생성자 함수의 정의

  • 클래스의 인스턴스가 생성될 때 자동으로 호출되는 특별한 메서드
  • 인스턴스의 초기화(초기 상태 설정)
  • 속성(프로퍼티)의 초기값 설정

 

1-2) 생성자 함수 사용법

  • constructor 키워드를 사용하여 클래스 내부에 정의
  • 인자를 받아서 클래스의 프로퍼티를 초기화

 

1-3) 특징

  • 클래스는 단 하나의 생성자만 가질 수 있다.
  • 반환값X 함수, 자신을 new 키워드와 함께 호출하는 대상(클래스)의 새로운 인스턴스를 암시적으로 반환
  • 필수적인 요소 X, 생성자가 없는 경우 자동으로 빈 생성자를 추가

 

2. '사람' 클래스 정의

class Person {
  // 멤버 변수 (속성, 프로퍼티)
  name: string;
  age: number;

  // 생성자 함수
  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }

  // 메서드
  describe(): string {
    return `${this.name} is ${this.age} years old`;
  }
}
  • 클래스를 통해 객체를 생성하는 경우
  • new 키워드와 클래스의 생성자를 통해 인스턴스화
  • 기본 생략된 생성자가 아닌 사용자 정의 생성자를 작성하는 경우, 해당 생성자의 매개변수에 맞춰 인자를 전달해야 함!
let person1 = new Person('테드', 30);
console.log(person1.name); // 테드
console.log(person1.describe()); // 테드 is 30 years old

let person2 = new Person('테드친구', 25);
console.log(person2.name); // 테드친구
console.log(person2.describe()); // 테드친구 is 25 years old

 

3. 빈 생성자

  • 클래스 생성자를 통해 클래스의 인스턴스가 생성될 때 실행될 로직을 정의
  • 매개변수와 반환값이 없는 함수와 유사
function example() {
  console.log('함수 실행 시 출력됩니다.');
}
example(); // 함수 실행 시 출력됩니다.

class Dog {
  constructor() {
    console.log('멍멍!!!');
  }
}
let dog1 = new Dog(); // "멍멍!!!""

class Dog2 {
  constructor(barkingSound: string) {
    console.log(barkingSound);
  }
}
let dog2 = new Dog2('멍멍멍!!!'); // 멍멍멍!!!

 

4. 클래스의 속성의 활용

4-1) 속성 기본값

  • 함수의 기본 인자와 유사한 개념
  • 클래스 속성에도 생성자로 초기화 시키기 전에 기본값 제공이 가능

 

4-2) 읽기 전용 속성

  • readonly 키워드를 사용하여 읽기 전용 속성 정의
  • 속성 선언 또는 생성자 외의 장소에서 해당 속성에 값 할당 불가
class Triangle {
	// 4-1) 속성 기본값
  // width: number;
  // constructor() {
  //   this.width = 3;
  // }
  // 위에 코드는 아래 width: number = 3; 과 완전히 일치
  width: number = 3;

// 4-2) 읽기 전용 속성
  readonly height: number;
  constructor(height: number) {
    this.height = height;
  }
}

let triangle = new Triangle(5);
console.log(triangle.height); // 5

triangle.width = 4;
triangle.height = 4; // - Error: 읽기 전용 속성
console.log(triangle); // 4

 

5. this 키워드

  • 클래스의 현재 인스턴스를 참조하는 키워드
  • 클래스의 멤버변수나 메서드에 접근할 때 사용
class Human {
  // 속성
  age: number;
  intervalId: number;

  constructor() {
    this.age = 0;

    this.intervalId = setInterval(() => {
      this.age++;
      console.log(this.age);
    }, 5000);
  }

  stopAging() {
    clearInterval(this.intervalId);
  }
}

let a = new Human();
console.log(a.age);
setTimeout(() => {
  a.stopAging();
}, 15000);
  • 메서드나 생성자 내에서는 클래스의 멤버에 접근할 때 this를 사용
  • 화살표함수의 경우 해당 함수 내에서 this를 만들어내지 못하기 때문에
    해당 함수가 선언된 범위의 this를 찾아서 사용
  • 코드의 논리 이해가 필수적

 

 

노션으로 보고 싶다면?

https://short-echidna-b16.notion.site/Constructor-65725d26697544ca846fb336ebaaee3a?pvs=4

 

생성자(Constructor) | Notion

목차

short-echidna-b16.notion.site