⭐️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이라는 별명을 지어준 것이다.
'SwiftUI > SwiftUI(Intermediate)' 카테고리의 다른 글
6. Haptic 진동 (0) | 2023.05.24 |
---|---|
5. AVAudioPlayer 사운드 재생/ 열거형 (원시값,연관값) (0) | 2023.05.23 |
3. CoreData Relationship/ 관계형 데이터 모델 (0) | 2023.05.22 |
2. CoreData 코어데이터 기본 CRUD (0) | 2023.05.21 |
1. sorted / filter / map / compactMap (0) | 2023.05.21 |