inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] 타입스크립트 올인원 : Part1. 기본 문법편

클래스의 새로운 기능들

interface를 사용할 때 private 사용방법은?

해결된 질문

1031

wognskec

작성한 질문수 7

0

impolements러 interface를 받아 class를 만들때 private이 안되는 오류를 보여주셨는데요

interface를 사용하지 않고 그냥 class안에서 type을 지정하는 방법, abstract class를 이용하는 방법 모두 이해됬습니다.

하지만 interface를 사용하면 private, protected 사용이 불가한 것인지 잘 모르겠어서 질문을 올립니다.

 

 

구글링해본결과

class내에 속성으로 만들고 getter, setter를 이용하는 것으로 우회하는 방법을 사용하더라구요.

(https://stackoverflow.com/questions/37791947/how-to-define-a-private-property-when-implementing-an-interface-in-typescript)

 

이렇게 했을 때 private의 기능인 class 밖에서는 호출 할 수 없다고 위반되는 결과가 나옵니다.

 

어떤식으로 해결 해야 할까요?

interface Interface {
  readonly a: string;
  b: number;
}

class TSClass implements Interface {
  private readonly _a: string = "init";
  get a() {
    return this._a;
  }

  protected _b: number = 1;
  get b() {
    return this._b;
  }
  set b(v: number) {
    this._b = v;
  }

  c: string = "기본값이 public";

  method() {
    console.log(this._a);
    console.log(this._b);
    console.log(this.c);
  }
}

class inheritClass extends TSClass {
  method() {
    console.log(this._a); // error
    console.log(this.a); // 가능..
    console.log(this._b);
    console.log(this.b);
    console.log(this.c);
  }
}

new inheritClass()._a; // error
new inheritClass().a; // 가능...
new inheritClass()._b; // error
new inheritClass().b; // 가능..
new inheritClass().c;

 

typescript interface class private getter setter

답변 1

2

제로초(조현영)

인터페이스는 원래 그 특성 자체가 public입니다. private인 것은 인터페이스로 만들 필요도 이유도 없습니다.

데코레이터가 현재도 자주 쓰이는 문법인가요?

0

78

2

유틸리티 타입 실제로 구현은 못해도 하나씩 외우면 실무할 때 지장 없겠죠?

0

65

1

매핑 타입은 type에서밖에 안된다고 하네요?

0

64

2

자바에서의 오버로딩과 같은 개념이라고 생각해도 되나요?

0

69

2

filter 함수 반환 타입 네로잉 질문

0

71

2

map<U>(callbackfn: ....) 할때 U는 왜 여기 있는거에요??

0

45

2

ts 컴파일을 위한 type 라벨링 부분

0

46

1

concat 함수 타입 구현 중 질문 있습니다!

0

100

2

filter 메소드 질문

0

53

1

forEach 제네릭 관련 문의

0

60

1

타입 추론 시 가장 넓은 범위로 추론이 되는 건가요?

0

163

1

enum이 javascript로 트랜스파일링될때 사라진다하셨는데요

0

207

1

함수 파라미터 타입 정의 시 ...args: any[]와 ...args: any 의 차이

0

223

1

Flat type에서 ReadonlyArray 타입을 사용하는 이유?

0

157

1

bind type 질문

1

148

1

Lowercase type 관련 질문

0

152

1

key-value 타입 자동추론 질문드립니다

0

265

1

타입스크립트 교과서, p131

0

265

1

타입스크립트 교과서 p122 forEach 메서드 질문

0

231

1

타입스크립트 교과서 p116 , 코드에러남

1

269

1

타입스크립트 교과서 p112 , 코드가 안읽힙니다..

0

265

1

타입스크립트 교과서 p83

1

184

1

타입스크립트교과서 p39 쪽 코드가 이해가 안되요

1

227

1

class 에서 ts의 private vs js의 private field( # )

0

338

1