인프런 커뮤니티 질문&답변

egpark님의 프로필 이미지
egpark

작성한 질문수

[코드팩토리] [초급] 8시간만에 끝내는 코드팩토리의 Typescript 완전정복 풀코스

타입과 값으로 모두 사용 가능한 Class

class가 값이 될 수 있다는 말을 이해하기 어렵습니다.

작성

·

44

0

코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다!

[코드팩토리 디스코드]
https://bit.ly/3HzRzUM

 

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

안녕하세요, javascript 강좌도 열심히 소화하고 온 수강생입니다.

이번 강의가 좀 난해한데, javascript 강좌를 잘 소화했다면 어려움없이 이해했을거라고 하셔서..ㅎㅎ 제가 아직 소화를 못하고 있나 싶은 생각도 듭니다.

 

"class가 값이 된다는 것은, javascript 관점에서 보면 실제 class의 정의가 될 수 있다."

"javascript에서는 객체로 class를 만든다."

"class Dog 는 javascript class 형태의 값으로 선언할 수 있다."

 

위의 세 문장은 수업 중 언급하셨던 문장이고, 제가 가장 혼란스러워하는 부분입니다.

 

이 부분에 대한 저의 이해는 아래와 같습니다.

class Dog { name: string constructor(name: string){ this.name = name } bark(){ return `${this.name}가 짖습니다.` } }

위 class 정의가 '값'이 될 수 있는 이유는,

  • 값이 될 수 있다는 건 변수에 할당할 수 있다는 의미이고

  • class는 함수이자 객체이기 때문에

  • signature가 동일하면 동일한 것으로 간주한다.

  • 그러므로 Dog type의 ori 변수에

    { name: '별이', bark(){ return `${this.name} 이에요` } } 를 할당 할 수 있다

  • 따라서 class의 정의는 값이 될 수 있다

 

이해의 과정 중 마지막 두 문장에 확신이 없습니다.

그래서 class 정의가 값이 될 수 있다는 것이 여전히 이상하게 보입니다.

 

관련하여 제가 잘못 이해하고 있는 부분 혹은 이해를 도울 수 있는 예시 등을 부탁드려도 될까요!

미리 감사드립니다 :)

답변 1

0

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

TS에서 값과 타입을 나눠서 이해하는건 매우 중요합니다.

TS에서의 타입은 저희가 흔히 type과 interface로 구분하는 요소들입니다.

이 타입들은 JS 세계에서는 존재하지 않습니다.

하지만 class는 JS와 TS 세계 모두에 존재합니다. JS class 자체로 TS 타입을 유추 할 수 있습니다. 즉, 따로 type이나 interface를 선언해서 class 를 표현할 필요가 없습니다.

감사합니다!

egpark님의 프로필 이미지
egpark

작성한 질문수

질문하기