읽은 글 : 동적 타입 시스템은 더 개방적인 시스템이 아닙니다

·2020년 9월 1일
0

아침 글읽기

목록 보기
4/7

동적 타입 시스템은 더 개방적인 시스템이 아닙니다


자잘한 궁금증들 👀

구조적 타이핑? 명목적 타이핑?

명목적 (nominal) 타이핑은 타입의 구조가 아닌 타입의 이름만을 가지고 구별된다.
아래와 같이 Foo 와 Bar 는 '이름이 다르기 때문에' Foo 가 필요한 곳에 Bar 를 할당하면 에러가 난다.

class Foo { method(input: string) { /* ... */ } }
class Bar { method(input: string) { /* ... */ } }

let foo: Foo = new Bar(); // Error!

하지만 구조적 타이핑 시스템에서는 위와 같은 상황에서 에러가 나지 않는다.
Foo 와 Bar 가 구조적으로 완전히 동일하기 때문에 일치하다고 보기 때문이다.

글에서 말하듯 TypeScript 인터페이스는 구조적, Python 은 명목적이다!

0개의 댓글