iOS - Swift

[iOS/Swift] typealias

개발자 수니 2022. 2. 2. 18:56
728x90
반응형

📌  이번 글은

typealias 개념과 사용법입니다.

 

typealias 개념

  • 타입 별칭
  • 타입의 별칭을 만들어 새로운 타입으로 사용하는 것.
  • 코드를 더 읽기 쉽고, 명확하게 만들어줌

 

기본 타입/내장 타입에 사용

Swift 기본 타입 Int, String, Double등에 사용하는 방법입니다.

typealias 선언

Name 별칭의 String형 타입 선언,

Grade 별칭의 Int형 타입 선언

// typealias [별명] = [기존 타입]
typealias Name = String
typealias Grade = Int

typealias 사용

위에서 선언한 Name을 사용하는 예시

let name: Name = "Suni"
print("저는 \(name)입니다!")		// 저는 Suni입니다!

Grade를 사용하는 예시

func getGrade(age: Int) -> Grade {
    if age == 19 {
        return 3
    }
	// code ...
    return 0
}
let grade = getGrade(age: 19)
print("\(grade)학년 입니다!")    // 3학년 입니다!

 

사용자 정의 타입에 사용

class, struct, enum 타입에 사용하는 방법입니다.

사용자 정의 class

class Student {
    
}

typealias 선언

typealias Students = Array<Student>

typealias 사용

var arrStudent: Students = []
// 같음: var arrStudent: Array<Student> = []

 

클로저에 사용

클로저를 입력 매개변수로 사용할 때 typealias를 사용하여 코드를 명확하게 하는 방법입니다.

복잡한 클로저 함수 형태

func saveData(success: ((Int) -> Int)?,
              failure: ((Error) -> Void)?,
              progress: ((Double) -> Void)?) {
    // code ...
}

typealias 선언

typealias Success = (Int) -> Int
typealias Failure = (Error) -> Void
typealias Progress = (Double) -> Void

typealias 사용

클로저 함수에 typealias를 사용하여 명확하게 만들어 사용합니다.

func saveData(success: Success?,
              failure: Failure?,
              progress: Progress?) {
    // code ...
}

 

프로토콜 결합에 사용

typealias을 사용하여 프로토콜을 결합시키는 방법입니다.

여러 개의 프로토콜 채택

extension ListViewController: UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
    // code ...
}

typealias 선언

프르토콜을 결합한 typealias를 선언

typealias CollectionViewDelegate = UICollectionViewDelegate & UICollectionViewDataSource & UICollectionViewDelegateFlowLayout

typealias 사용

여러 개의 프로토콜 채택을 typealias을 사용하여 명확하게 만듭니다.

extension ListViewController: CollectionViewDelegate {
    // code ...
}

 

제네릭 타입에 사용

기존 제네릭 타입에 typealias를 사용할 수 있습니다.

Generic 참고 포스팅

 

[iOS/Swift] Generic

📌  이번 글은 Generic 개념과 사용법입니다. The Swift Programming Language Guide - Generic Generics are one of the most powerful features of Swift, and much of the Swift standard library is built w..

sunidev.tistory.com

typealias 선언

// StudentList라는 Array(Generic 타입) typealias 선언
typealias StudentList<T> = Array<T>

타입 제약 추가

typealias 선언 시, 타입 제약도 추가할 수 있습니다.

Generic의 타입 제약 내용도 Generic 포스팅에 정리해두었습니다.

// StudentList라는 Array(Generic 타입) typealias 선언
// Array에 타입 제약 추가
typealias StudentList<T> = Array<T> where T:StringProtocol

typealias 사용

Generic 타입의 typealias를 사용하여 코드를 명확하게 만들어 적합한 곳에 사용합니다.

또한, 타입 제약을 활용해 Generic 타입을 적절히 커스텀하여 사용할 수 있습니다.

// StudentList를 사용하여 배열 생성
var students: StudentList<String> = []
// 같음 : var students: Array<String> = []

 

 

 

 

🙋🏻‍♀️ 참고

Swift - typealias

[Swift] Typealias, 타입 별칭 사용하기

swift typealias, 스위프트 별명 사용방법, 주의 사항

728x90
반응형