본문 바로가기
개발 용어 정리

[js] duck typing(덕 타이핑) with typescript

by minhyeok.lee 2023. 2. 5.
반응형

[ts]_덕 타이핑(duck typing) - 타입 구성하기

자바스크립트는 변수에 어떠한 타입의 값도 할당할 수 있다. 일명 덕 타이핑이라 부른다.

타입스크립트도 여러 타입의 값을 할당할 수 있다. 이는여러 타입을 조합한 새로운 타입을 가지는 것이다.

 

유니언 (Union) 타입

유니언 타입이 위에서 설명했던 여러 타입을 조합한 타입이다.

다음 코드에서 getLength 함수의 인자로 받은 obj 객체는 string 또는 string 배열 타입을 가질 수 있다.

function getLength(obj: string | string[]){
  return obj.length;
}

 

유니언 타입을 활용하면 변수가 가질 수 있는 값을 제한할 수도 있다.

type Team = "Red" | "Blue";

 

타입스크립트는 열거형(enum)을 제공한다.

따라서 위 코드는 다음과 같이 열거형으로 사용하는게 더 편하다.

enum Status{
  Red,
  Blue,
}

 

제네릭 (Generic) 타입

Java나 C#에서의 제네릭과 유사한 기능을 한다.

어떠한 타입이든 정의될 수 있지만 호출되는 시점에 타입이 결정된다.

만약 다음과 같이 인자를 그대로 리턴하는 함수가 있다고 하자.

fuction identity(arg: any): any{
  return arg;
}

 

이 함수의 반환 값은 any로 되어 있기 때문에 arg에 'test'를 인자로 전달할 경우 전달한 인자의 string 타입이 반환할 때 any가 된다.

 

function identity<T>(arg: T): T{
  return arg;
}

반면 다음과 같이 제네릭 타입을 사용하게 되면 리턴되는 값의 타입은 함수를 호출하는 시점의 인자로 넣은 타입으로 결정되도록 할 수 있다.

 

 

결론:

덕 타이핑(duck typing)은 객체의 변수 및 메서드의 집합이 객체의 타입을 결정하는 것이다.

typescript를 사용하여 덕 타이핑을 좀 더 잘 사용해보자.

반응형

댓글