작성
·
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 를 표현할 필요가 없습니다.
감사합니다!