[TypeScript] 구조적 타이핑(Structural Typing)이란?

juiuj·2024년 10월 9일
0

TS-study

목록 보기
8/11

구조적 타이핑이란?

구조적 타이핑 = 구조적 타입 시스템(Structural Type System)

객체나 데이터 타입을 정의할 때, 그 구조(멤버, 필드, 메서드 등)에 기반하여 타입을 결정하는 개념으로, 객체가 특정 타입을 따르기 위해서 명시적으로 그 타입을 선언할 필요가 없음.
대신 해당 객체가 그 타입의 구조를 충족하면 해당 타입으로 간주함.

명목적 타입 시스템(Nominal Type System)

구조적 타이핑에서는 객체의 이름보다는 객체가 갖고 있는 속성메서드가 중요함

interface Person {
    name: string;
    age: number;
}

let person = { name: "Alice", age: 25 };
let anotherPerson: Person = person;  // 구조만 같으면 할당 가능

위의 예제에서는 anotherPerson 변수가 Person 타입으로 선언되었지만, Person 변수는 명시적으로 Person 타입으로 선언되지 않았음.
그러나 person 객체가 Person 타입의 구조를 만족하기 때문에 타입 추론에 의해 anotherPerson 변수에 할당될 수 있음.

즉, 객체의 구조만 맞으면 해당 타입으로 간주됨

Q.구조적 타이핑의 장점은?
A. 객체가 특정 클래스를 명시적으로 상속받거나 구현하지 않더라도 구조만 맞으면 그 타입으로 사용할 수 있어서 유연하게 코드를 작성할 수 있다.
또한 간결한 코드 작성이 가능하다.

0개의 댓글