본문 바로가기
개발/Dart

Dart 기본 - 17. typedef, 복잡한 함수 타입을 간결하게 하는 방법

by 왼하루 2023. 2. 5.
반응형

Dart에서는 함수 타입을 정의하기 위해 typedef를 사용할 수 있습니다. typedef를 사용하면 함수의 타입을 명확하게 표현할 수 있어 가독성이 높아지고, 특정 타입을 가진 함수를 많이 사용하는 경우 간결한 코드를 작성할 수 있습니다.

 

 

Dart의 typedef

list 혹은 map, set 등의 타입으로 함수의 반환값을 정하면 그 구조가 복잡해질 수 있습니다. typedef는 함수 타입을 미리 정의 해 놓음으로써 복잡한 구조의 타입을 미리 정의하여 재사용성을 높일 수 있습니다.

 

아래는 문자열로 된 리스트를 반환값으로 가지는 예시입니다.

List<String> reverseListOfName(List<String> list) {
  var reversed = list.reversed;
  return reversed.toList();
}

void main() {
  var data = ['john','mike','tom'];
  print(reverseListOfNumbers(data));
}

 

위 코드에서 List<String>을 typedef로 정의하여, 보다 간단히 함수를 정의할 수 있습니다.

 

 

 

typedef 사용 방법

typedef를 사용하기 위해서는 다음과 같은 구문을 사용합니다.

typedef 유형 이름 = 함수 타입;

 

위의 List<String>을 함수의 타입으로 정의하고 싶다면 다음과 같이 정의할 수 있습니다.

typedef ListOfString = List<String>;

 

이제 ListOfString 타입의 함수를 정의하고 사용할 수 있습니다.

typedef ListOfString = List<String>;

ListOfString reverseListOfName(ListOfString list) {
  var reversed = list.reversed;
  return reversed.toList();
}

void main() {
  var data = ['john','mike','tom'];
  print(reverseListOfName(data));
}

 

입력한 이름 데이터가 정의된 함수에 따라 반대로 출력된 결과입니다.

결과

 

 

typedef 의 장단점

typedef를 사용하면 함수의 타입을 명확하게 표현할 수 있어 가독성이 높아집니다. 또한, 특정 타입을 가진 함수를 많이 사용하는 경우 간결한 코드를 작성할 수 있습니다. 하지만, typedef를 사용할 때 명시적으로 타입을 정의해야 하므로 개발자가 추가적인 코드를 작성해야 할 수도 있습니다.

 

그러나, Dart의 경우 강력한 제네릭 기능을 갖추고 있어 타입을 명시적으로 정의하지 않아도 되는 경우도 많습니다. 따라서, typedef를 사용하는 것이 필요한 경우에만 사용하면 됩니다.

 

 

마무리

Dart에서 typedef를 사용하여 함수 타입을 정의할 수 있으며, 강력한 제네릭 기능을 갖추고 있어 타입을 명시적으로 정의하지 않아도 되는 경우도 있습니다. 필요한 경우에만 사용하면 됩니다.

 

오늘도 행복한 코딩생활 되시길 바라겠습니다.

 

감사합니다.

댓글