Starbucks Caramel Frappuccino
본문 바로가기
  • 그래 그렇게 조금씩
SwiftUI/SwiftUI(Intermediate)

4. typealias 타입앨리어스

by Toughie 2023. 5. 22.

⭐️typealias⭐️

자주 써본 것은 아니지만, 잘 활용하면 좋을것 같은 타입앨리어스에 대해 알아보자.

말 그대로 타입의 별명을 지어주는 것이다.

 

//  Created by Toughie on 2023/05/22.
//

import SwiftUI

struct MovieModel {
    let title: String
    let director: String
    let spectators: Int
}

//struct TVModel {
//    let title: String
//    let director: String
//    let spectators: Int
//}

//new name for existing type
typealias TVModel = MovieModel

영화/티비/예능 서비스를 제공하는 앱을 만든다고 치자.

먼저 영화서비스를 개발중이라서 이름/감독/관람객 이라는 프로퍼티가 있는 영화모델을 만들었다.

 

그런데 이제 티비프로그램도 추가되어야 해서 프로퍼티를 고민해 보니

기존 영화모델의 프로퍼티와 사실 거의 똑같다.(여기서는 동일하다고 가정하자. 제목/감독/시청자)

 

대부분은 프로퍼티나 메서드가 달라서 따로 모델을 만들겠지만, 클래스라면 상속을 할 수도 있고..

위와 같은 상황에서는 TVModel을 따로 만들기 보다는 타입앨리어스를 활용해 기존 모델을 활용할 수 있다.

(효율적이고, 깔끔하다.)

    @State var movie: MovieModel = MovieModel(title: "GOG", director: "Gun", spectators: 9999)
    @State var tvShow: TVModel = TVModel(title: "Travle", director: "Na", spectators: 976)

그럼 위와 같은 것이 가능해진다.

 

structure와 같은 커스텀 타입 말고 함수 타입에서도 타입앨리어스를 활용할 수 있다.

함수 타입이 엄청 길어지는 경우 유용하다고 생각한다.

typealias myType = (Int) -> (Double)

func doSomething(_ parameter: myType) {
    let result = parameter(10)
    print(result)
}

함수는 1급 객체이기 때문에 함수를 파라미터로 받을 수 있다는 점을 생각하며..

input이 Int, return이 Double인 함수타입을 myType이라는 별명을 지어준 것이다.