Closed hyeyoonS closed 3 months ago
(1)
런타임
에 해당 구조를 확인
하여 타입을 정하는 방법입니다.컴파일 타임
에 구조를 보고
타입을 확인하는 방법입니다.(2) 덕타이핑과 구조적타이핑은 타입 시스템을 구현하는 방식입니다. 타입의 구조에 대해 A interface와 B interface가 있다고 가정해보자. B interface가 A interface의 타입에 대해 유효한지 확인하기 위해 B interface안의 타입들이 A interface에 있는지 만 확인한다라고 볼 수 있습니다. 쉽게 말해서 타입을 받는 입장에서 해당 타입들만 구조적으로 보고 판단한다라고 말할 수 있을 것 같습니다.
차이점은 덕타이핑의 경우 런타임에 타입을 검사할 수 있고 구조적타이핑의 경우 컴파일 타임(즉, 타입 체커)에 타입을 확인 할 수 있습니다.
❓문제
(1) 덕 타이핑, 구조적 타이핑, 명목적 타이핑에 대해 설명해주세요! (2) JS의 덕타이핑과 TS 의 구조적타이핑의 공통점과 차이점에 대해서도 알려주세요~!
🎯 답변 요약
(1)
런타임
에 해당구조를 확인
하여 타입을 정하는 방법입니다.컴파일 타임
에구조를 보고
타입을 확인하는 방법입니다.(2) 덕타이핑과 구조적타이핑은 타입 시스템을 구현하는 방식입니다. 타입의 구조에 대해 A interface와 B interface가 있다고 가정해보자. B interface가 A interface의 타입에 대해 유효한지 확인하기 위해 B interface안의 타입들이 A interface에 있는지 만 확인한다라고 볼 수 있습니다. 쉽게 말해서 타입을 받는 입장에서 해당 타입들만 구조적으로 보고 판단한다라고 말할 수 있을 것 같습니다.
차이점은 덕타이핑의 경우 런타임에 타입을 검사할 수 있고 구조적타이핑의 경우 컴파일 타임(즉, 타입 체커)에 타입을 확인 할 수 있습니다.
🎯답변
(1) 덕 타이핑, 구조적 타이핑, 명목적 타이핑
덕타이핑
"만약 어떤 새가 오리처럼 걷고, 헤엄치고, 꽥꽥거리는 소리를 낸다면 나는 그 새를 오리라고 부를 것이다”
구조적 타이핑과 명목적 타이핑
구조적 타이핑
구조적 타이핑 = 명목적으로 구체화한 타입 시스템
타입을 사용하는 여러 프로그래밍 언어에서 값이나 객체는 하나의 구체적인 타입을 가지고 있다. 타입은 이름으로 구분되며 컴파일타임 이후에도 남아있는데, 이것을 명목적으로 구체화한 타입 시스템이라고 부르기도 한다.
명목적 타이핑
명목적 타이핑
타입의 이름(명칭)을 기준으로 타입의 호환성을 결정
⇒ 두 타입이 동일한 이름을 가질 때만 서로 호환됩니다.
두 타입이
이름이 다르면
구조가 동일하더라도 서로 다른 타입으로 간주됩니다. 주로 Java, C# 언어에서 사용(2) 자바스크립트의 덕타이핑과 타입스크립트의 구조적타이핑 비교
공통점:
차이점:
덕 타이핑 (JavaScript)
구조적 타이핑 (TypeScript)
⇒ 타입스크립트의 구조적 타이핑 시스템으로 컴파일 시점에 타입 오류를 확인할 수 있어 타입 안정성을 보장해준다 ~!