← 질문 목록
#81깊이 0

이름이 다른 두 타입이 호환되는 기준은?

언어 · 런타임기초언어 의미론

대상 타입이 요구하는 멤버를 소스 타입이 호환되는 형태로 갖추면 이름이나 선언 계보가 달라도 대입할 수 있다. TypeScript는 기본적으로 구조를 비교한다.

기준구조적 타이핑명목적 타이핑
호환 조건멤버 구조선언 이름·계보
재사용암시적명시적
구분 강도약함강함

소스에 속성이 더 많아도 대입은 대체로 허용된다. 다만 새 객체 리터럴을 바로 넣을 때는 초과 속성 검사로 오타 가능성을 잡는다.

구조가 우연히 같은 식별자 타입은 서로 섞일 수 있다. 브랜드 필드를 더하면 명목적 구분을 흉내 내어 UserId와 OrderId 같은 혼용을 막을 수 있다.

타입 검사는 컴파일 시 사라진다. 외부 입력의 실제 구조는 런타임 검증이 필요하다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

이름이 다른 두 타입이 호환되는 기준은?