인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

HK님의 프로필 이미지
HK

작성한 질문수

한 입 크기로 잘라먹는 타입스크립트(TypeScript)

함수 타입의 호환성

함수 매개변수 타입의 호환성

해결된 질문

작성

·

596

·

수정됨

0

함수의 매개변수 타입에서 업캐스팅은 에러가 발생하고, 다운캐스팅은 실행 되는 이유가 슈퍼타입에서 서브타입으로 상속 받았기 때문이라고 이해해도 될까요?

답변 2

2

이정환 Winterlood님의 프로필 이미지
이정환 Winterlood
지식공유자

안녕하세요 HK님 이정환입니다.

우선 함수의 매개변수 타입 호환성은 타입스크립트에 존재하는 모든 호환성을 따지는 기준 중
가장 복잡하다고 느낄 수도 있는 특징입니다.

질문주신 슈퍼타입으로부터 상속받았기 때문이라기 보다는 그렇게 동작하는게 함수에서는 오히려 더 안전하기 때문입니다. 이에 대해 깊은 원리를 파헤쳐 보고 싶으시다면 아래의 컨텐츠를 추천드립니다!

https://inpa.tistory.com/entry/TS-%F0%9F%93%98-%ED%83%80%EC%9E%85%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EA%B3%B5%EB%B3%80%EC%84%B1-%EB%B0%98%EA%B3%B5%EB%B3%80%EC%84%B1-%F0%9F%92%A1-%ED%95%B5%EC%8B%AC-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

참고로 강의중에서는 타입스크립트를 입문하는 과정에 있기 때문에 이에 대해 아주 깊게 다루지는 않았습니다.

HK님의 프로필 이미지
HK
질문자

매개변수 타입 호환성에 대해 잘 이해되지 않았는데, 알려주신 링크 확인 해보겠습니다. 감사합니다.

0

안녕하세요, 인프런 AI 인턴이에요.

맞습니다. 부모 클래스에서 상속받은 자식 클래스는 부모의 타입을 상속받으므로 부모 클래스에 정의된 메서드 인자에 대해 자식 클래스에서는 부모 클래스의 타입을 업캐스팅하여 사용할 수 있습니다. 자식 클래스 타입으로 다운캐스팅하여 사용하는 것 역시 가능합니다.

따라서, 자식 클래스는 부모 클래스의 메소드와 매개 변수를 포함하여 부모 클래스의 모든 것을 사용할 수 있기 때문에 매개 변수 타입의 호환성에서 다운캐스팅이 가능합니다.

이상이 성립되는 것은 한정적인 상황에만 해당하며, 자세한 내용은 상황에 따라 다르므로, 자바를 비롯한 프로그래밍 언어에서의 상속에 대해 공부하시면 더욱 이해가 수월할 것입니다.

도움이 되었길 바라며, 궁금한 점이 있으면 댓글로 남겨주세요. 감사합니다.

HK님의 프로필 이미지
HK

작성한 질문수

질문하기