성장에 목마른 코린이

TypeScript 6. Classes: abstract class, method, public, private, protected 본문

TypeScript

TypeScript 6. Classes: abstract class, method, public, private, protected

성장하는 코린이 2022. 7. 30. 10:32
728x90

Classes

왼쪽 예시는, TypeScript로 만든 Class이고

오른쪽 예시는, JavaScript로 만든 Class입니다.

보시면 TypeScript는 private 키워드가 있는데, 이 키워드는

오로지 TypeScript가 개발자를 보호해주기 위해서만 사용하는 것이고, JavaScript에서는 사용되지 않습니다.

TypeScript에서 nico.firstName을 했을때, 에러가 뜨는 이유는 private 키워드를 사용해 만들었기 때문입니다.

private

위 캡쳐에서 보실 수 있다시피 private하게 만들면, 외부에서 접근이 불가능해집니다.

하지만 Javascript에서는 private 키워드가 없기때문에, 잘 작동이 되죠.

그럼 어디서 private하게 선언한 firstName과 lastName을 사용하는지 궁금할텐데요.

여기의 예시처럼, abstract class 안에서 사용하면 에러가 뜨지않고 사용할 수 있습니다.

public

위에서는 private에서 배워보았는데요, 그럼 public은 어떨까요?

public은 말그대로, 어디서든 사용가능합니다!

abstract class

abstract class(추상 클래스)는 오직 다른곳에서 상속받을 수만 있는 클래스입니다.

하지만 이 클래스는 직접 새로운 인스턴스를 만들 수는 없습니다.

그래서 위의 예시에서 볼 수 있다시피, 새로운 new User를 만들려고하는데 에러가 뜨는걸 볼 수 있습니다.

그리고 만약 property를 private으로 만든다면, 그 클래스를 상속하였을지라도, 접근이 안됩니다.

이 property 들은 당연히 인스턴스 밖에서 접근할수가 없고, 다른 자식 클래스에서도 접근할 수 없습니다.

protected

하지만 만약 필드가 외부로부터는 보호되지만, 다른 자식 클래스에서는 사용되기를 원한다면, protected를 쓸 수 있습니다.

이제 예전과 달리 User를 상속하면 User.nickname에 접근할 수 있습니다.

abstract method

추상 메소드는 구현이 되어 있지 않은 (코드가 없는) 메소드입니다.

call signature만 가지고 있는데, 함수의 이름과 argument를 안 받을 때도 있지만, 

argument를 받을 경우 argument의 이름과 타입 그리고 함수의 리턴타입을 정의하고 있습니다.

 

추상 메소드가 있는 경우, 추상 클래스를 상속받는 클래스에서 추상 메소드를 구현해주어야합니다!

'TypeScript' 카테고리의 다른 글

TypeScript 8. Interfaces part 1  (0) 2022.08.01
TypeScript 7. Classes Recap + 챌린지  (0) 2022.07.30
TypeScript 5. Generic  (0) 2022.07.30
TypeScript 4. Call Signature  (0) 2022.07.30
TypeScript 3. any, unknown, void, never  (0) 2022.07.30
Comments