[Typescript] 클래스와 접근제어자

2023. 12. 12. 21:29· TYPESCRIPT

클래스와 접근제어자

 

- TypeScript에서는 this로 접근할 수 있는 각각의 속성들은 constructor 함수가 만들어지기 전에 클래스 바디 부분에서 타입이 지정되어 있어야 한다.

- 클래스 바디: 클래스가 선언되고 중괄호가 열린 곳부터 닫히는 곳까지의 영역

- 속성 부분의 타입은 constructor 함수 위에 있는 클래스 바디 부분에 명시 해주면 된다.

- 접근 제어자 같은 경우에는 속성에서만 사용하는 것이 아니라 메서드에서도 사용가능하다.

 

접근제어자(Access Modifier)

 

public - 어디서나 자유롭게 접근 가능, 클래스 바디에서 생략 가능하다.

protected - 선언된 클래스나 해당 클래스에서 파생된 후손 클래스 내에서 접근 가능

private - 선언된 클래스에서만 접근 가능

 

접근 제어자를 사용하는 방법은 두 가지가 있다.

class UserA {
  public first: string // public은 생략이 가능하다. 하지만 명시해주는 것도 좋은 방법.
  protected last: string
  age: number
  
  constructor(first: string, last: string, age: number) {
    this.first = first
    this.last = last
    this.age = age
  }
  getAge() {
    return `${this.first} ${this.last} is ${this.age}`
  }
}
class UserA {
  constructor(
    public first: string,
    public last: string,
    public age: number) {
      // ...
  }
  // 반복해서 보면 지저분할 수 있기 때문에 위 코드를 이처럼 쓸 수 있다.
  // 주의점: 매개변수에서 public을 사용할 때는 생략할 수 없다는 것
  getAge() {
    return `${this.first} ${this.last} is ${this.age}`
  }
}

 

아래는 UserA에서 파생된 UserB를 만드는 과정이다.

class UserB extends UserA {
  getAge() {
    return `${this.first} ${this.last} is ${this.age}`
  } // 함수 모양은 같지만, 새로 선언했기 때문에 기존에 있던 것을 덮어쓴 것.
   // first : 접근 제어자가 public이기 때문에 어디에서나 사용이 가능하다.
   // last : 접근 제어자가 protected이고 UserB는 UserA의 후손이기 때문에 접근 가능하다.
   // age를 만약 private으로 바꾸면 에러가 발생한다.
   // private 접근 제어자는 내 클래스 내에서만 사용 가능하기 때문이다.
}

const no = new UserA('critsiano', 'ronaldo', 36);
console.log(no.first);
// console.log(no.last);
// 접근 제어자가 protected이기 때문에 선언된 클래스, 혹은 그 후손 클래스 내에서만 사용 가능하다. 
// 생성자 함수를 호출해서 나오는 인스턴스에서는 사용 불가
console.log(no.age);

'TYPESCRIPT' 카테고리의 다른 글

[Typescript] 타입 내보내기 (export, import)  (0) 2023.12.12
[Typescript] 제네릭 (Generic)  (0) 2023.12.12
[Typescript] 함수 오버로딩 (Overloading)  (0) 2023.12.12
[Typescript] this의 타입  (0) 2023.12.12
[Typescript] 타입 별칭(Type Alias)  (0) 2023.12.12
'TYPESCRIPT' 카테고리의 다른 글
  • [Typescript] 타입 내보내기 (export, import)
  • [Typescript] 제네릭 (Generic)
  • [Typescript] 함수 오버로딩 (Overloading)
  • [Typescript] this의 타입
Melon Man
Melon Man
Hello World
Melon Man
제발 CPU는 집에서 만들어 씁시다
Melon Man
전체
오늘
어제
  • 분류 전체보기 (644)
    • 직접 만들어 보기 (2)
    • 가내공업 (2)
    • HTML (0)
    • CSS (4)
    • JAVASCRIPT (51)
    • TYPESCRIPT (14)
    • NODE.JS (19)
    • REACT (7)
    • NEXT.JS (1)
    • REACT NATIVE (5)
    • REDUX (2)
    • PYTHON (17)
    • 자료구조 및 알고리즘 (35)
    • 컴퓨터 구조 (9)
    • 운영체제 (7)
    • NETWORK (3)
    • CodeUp 기본 100제 - Python (98)
    • 잡지식 (1)
    • 백준 (347)
    • SWEA (0)
    • GIT (4)
    • C (2)
    • C++ (11)
    • JAVA (2)
    • 객체지향프로그래밍 (0)
    • 정보처리기사 (1)
    • 프로그래머스_SQL (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • input
  • 코드업
  • event
  • node.js
  • CodeUp
  • 알고리즘
  • 위상정렬
  • React
  • mdn
  • 함수
  • 파이썬
  • 정렬
  • 입출력
  • C++
  • 백준
  • 자료구조
  • 유니온 파인드
  • TypeScript
  • python
  • 초보
  • 다익스트라 알고리즘
  • BFS
  • 표준내장객체
  • 기초
  • 자바스크립트
  • javascript
  • 운영체제
  • standard built-in object
  • 입문
  • Node

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.3.0
Melon Man
[Typescript] 클래스와 접근제어자
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.