개발 관련/iOS SWIFT

[Swift] Typealias란 무엇인가?

magpiebros 2023. 4. 5. 16:44
반응형

안녕하세요 맥파이입니다.

오늘부터는 Swift를 공부하면서, 한번씩 이게 뭐지 할수 있는 것들에 대해 정리를 해볼려고 합니다.

여러번 정리를 해보고 했지만, 글로 남겨두지 않으니 필요할때 다시 찾아보게 되더라고요..

 

그래서 시작했습니다.

Swift 관련 궁금증을 모두 날려버리자 씨리즈입니다.

 

그 첫번째는 Typealias입니다. 

 

 

Typealias

기존에 선언되어 있는 유형에 별칭을 사용하여 가독성을 높이는 문법입니다.
치환한다고 하면 이해하기가 쉬울것 같습니다.

한번 확인해보시죠.

Typealias 사용 방법

typealias를 사용하는 방법에는 5가지 방법정도가 존재하는것으로 보입니다.
하나씩 확인해보도록 합시다.

  • Built-in type : String, Int
  • User defined types: Class, Enum, Tuple
  • Complex types: Closure
  • generic parameters
  • 프로토콜 선언시


내장 유형(Built-in type)

typealias Brand = String
let brand: Brand = “샘숑”

이제 Brand를 사용하면 String과 같은 효과를 나타냅니다.
어찌보면 define과도 비슷한 것 같습니다.


사용자  정의(User defined types) 유형

Class MyCell { }

typealias MyCells = [MyCell]
var cells: MyCells = []

MyCells를 사용하면 [MyCell]을 의미합니다.
마지막 줄은 다음과 같습니다.

var cells: [MyCell] = []

 
복합적인 유형 예시

func hello(completion: (void) -> String) { }

typealias greeting = (void) -> String
func mornig(completion: greeting) { }

이제 감이 오시죠.. 대체했다고 생각하면 어려울게 없습니다.


추가적으로 지저분한 함수를 정리할수 있습니다.

func dirty(completion1: ((void) -> (String)), completion2: ((String) -> (String)))
func dirty(completion1: completionA, completion2: completionB)

 

 

typealias에 제너릭 타입(Generic parameters) 지정하기

typealias AnimalNameDic<T> = Dictionary<String: T>
var animal: AnimalNameDic<String> =  [:]

typealias DicOfInts<Key: Hashable> = Dictionary<Key, String>

이제 조금 어려운 부분이 들어갑니다.
제너릭을 모른다면 위 코드는 이해하기가 힘들수 있습니다.
제너릭은 다음에 준비하기로 하고 이해가 안된다면 넘어가시죠.



프로토콜 선언시

protocol Sequence {
    associatedtype Iterator: IteratorProtocol
    typealias Element = Iterator.Element
}
func sum<T: Sequence>(_ sequence: T) -> Int where T.Element == Int { }

프로토콜 선언시에도 typealias를 사용할수 있습니다.

associatedtype도 처음 보시나요!!

 

아래 링크로 학습해보세요.

2023.04.05 - [iOS 개발/swift] - [Swift] Associated Type 이란?

 


또 다른 예시

public typealias Codable = Decodable & Encodable
public typealias CollectionViewDelegate = UICollectionViewDataSource & UICollectionViewDelegate & UI

 

이제 감이 딱 오시죠!

지금까지 맥파이였습니다.

양질의 컨텐츠를 만들어보겠습니다.

 

또 만나요!!

반응형