[TIL] 덕 타이핑(duck typing)

Oct 31, 2024 | Dec 23, 2024
|
Ryoon.With.Wisdomtrees
Ryoon.With.Wisdomtrees
✏️
덕타이핑 = “만약 어떤 새가 오리처럼 걷고, 헤엄치며 꽥꽥거리는 소리를 낸다면 나는 그 새를 오리라고 부를 것이다.”
 
타입스크립트가 구조적타이핑을 채택한 이유는 타입스크립트가 자바스크립트를 모델링한 언어이기 때문이다. 자바스크립트는 본질적으로 덕 타이핑(duck typing)을 기반으로 한다. 덕 타이핑은 어떤 함수의 매개변숫값이 올바르게 주어진다면 그 값이 어떻게 만들어졌는지 신경 쓰지 않고 사용한다는 개념이다.
 
타입스크립트는 이런 동작을 그대로 모델링한다. 타입스크립트는 자바스크립트의 특징을 그대로 받아들여 명시적인 이름을 가지고 타입을 구분하는 대신 객체나 함수가 가진 구조적 특징을 기반으로 타이핑하는 방식을 택했다. 구조적 타이핑 덕분에 타입스크립트는 더욱 유연한 타이핑이 가능해졌다. 쉬운 사용성과 안전성이라는 두 가지 목표 사이의 균형을 중시하는 타입스크립트에서는 객체 간 속성이 동일하다면 서로 호환되는 구조적 타입 시스템을 제공하여 더욱 편리성을 높였다.
 
자바스크립트의 덕 타이핑과 타입스크립트의 구조적 타이핑은 서로 구분되는 타이핑 방식이지만, 실제 사용하는 코드를 보면 차이가 없어 보인다. 두 가지 타이핑 방식 모두 이름으로 타입을 구분하는 명목적 타이핑과는 달리 객체가 가진 속성을 기반으로 타입을 검사하기 때문이다.
 
덕 타이핑과 구조적 타이핑의 차이는 타입을 검사하는 시점에 있다. 덕 타이핑은 런타임에 타입을 검사한다. 자바스크립트는 덕 타이핑 언어다. 구조적 타이핑은 컴파일타입에 타입체커가 타입을 검사한다. 다시 말하지만 타입스크립트는 구조적 타이핑을 채택하고 있다.
 
덕 타이핑과 구조적 타이핑 모두 객체 변수, 메서드 같은 필드를 기반으로 타입을 검사한다는 점에서 동일하지만, 타입을 검사하는 시점이 다르다. 덕 타이핑은 주로 동적 타이핑에서 구조적 타이핑은 정적 타이핑에서 사용된다.
 
출처: 우아한 타입스크립트 with 리액트 - 한빛미디어 , 2장 타입
 
[TIL] any 타입[TIL] 트리쉐이킹 (tree-shaking)
  뒤로  
기술 로그
사이드 프로젝트
능동적 나눔과 기쁨
생각 조각 모음
독서 노트
독후감
영감 기록