타입스크입트의 타입이 값의 집합임을 이해하기
[진욱] 집합의 원소를 타입이 될 수 있는 값이라고 생각하는게 좋을 것 같다. (집합의 원소를 객체의 속성으로 생각하면 안된다)
[동호] (예제 하나를 언급하며) 이걸 맞추면 어느정도 이해 된 것

위 예제에서 Person이 Creature의 하위 집합임을 이해하면 좋다. 결국 결론은 객체의 속성을 늘릴수록 ‘제약조건’이 추가된다고 생각해보자.
[재희] 이걸 보면 도움이 될 듯.. 함수에서 a.b로 타입 narrowing 해줬는데 왜 에러가 나는지부터 생각해보면 좋을거 같다
- [효리] 타입 단언말고 더 있나요? (에러 해결법이)
- [재희] 타입단언 또는 위 코드의 F처럼 하는 게 있다.
아래 코드의 (1) 에서 Cylinder는 타입으로 쓰였나 값으로 쓰였나
[효리] (1)은 값 (2), (3)은 타입? instanceof 자체가 자바스크립트 문법이니까 뒤에는 값공간이다. 블록 안에서는 타입을 이용해 읽어들인다.(타입추론 말씀하신듯)
[태호] Cylinder가 만약 interface였으면 instanceof에서 에러가 날 것. class가 값과 타입으로 모두 쓰일 수 있어서 instanceof 뒤에서 타입으로 쓰이는것 같다.
[진욱] 값 공간이면서 타입 공간인 것 같다. (런타임 에서도 동작하고 타입스크립트의 타입 추론도 해준다)
아래에서 shape의 타입이 ‘{}’가 되는 이유가 무엇인가?
우선 Cylinder는 타입으로도 선언이 되어있고 함수로도 선언이 되어있는 상태
[동호] shape.radius와 같은 문법을 써서 {}로 추론해 주는 것 같다.
→ 값이면 빈 객체로 간주된다.
[진욱] Cylinder가 함수라서 {}로 추론해 주는 것 같다.
typeof 클래스? 클래스의 인스턴스 타입?
[효리] typeof 클래스, InstanceType<typeof 클래스> 등을 어느 상황에서 사용하는 것인지 궁금하다.
→ 멘토님에게 여쭤보기로 결정
공통된 속성 체크 관련
[효리] 오타 때문이 아닌가
[재희] 임시변수에 할당을 했기 때문에 오류가 없어야 하는데..(구조적 타이핑 관점에서) 약한 타입 에서만 공통된 속성 체크 때문에 오류가 발생한다.
할당 가능 검사와 잉여 속성 체크는 별도의 과정이다?
[효리] 별도의 과정이라는 말이 모호하다
[동호] 객체 리터럴을 통해서 할당하는 경우 개발자의 실수를 잡아주거나 편의를 위해 별도로 체크를 해주는것이 아닌가 (예를 들면 오타를 낼 가능성이 있다 → 구조적 타이핑 관점에서는 오타도 허용이 되니까 하신 말씀인듯)
[동호] 잉여 속성 체크 라는 말 대신 ‘엄격한 객체 리터럴 체크’라고 생각하는게 이해가 편하다.