티스토리 뷰
typealias는 기존에 선언되어있는 타입에 새로운 타입의 별칭을 선언해 사용하는 것입니다.
선언하는 방법은 아래와 같습니다.
typealias name = existing type
typealias를 사용하면 코드를 이해하기 쉽게 만들며 명확하게 해 줍니다.
라고 설명은 되어있지만 사실 typealias는 개개인마다 생각하는 게 다른 것 같아요.
어떤 개발자는 typealias를 많이 사용하며,
또 어떤 개발자는 더 복잡하게 만든다며 사용하길 꺼려하는 경우도 있습니다.
예를 들어 NetworkManager라는 클래스가 있습니다.
깃헙의 유저를 가져오는 함수가 있다고 가정합시다.
class NetworkManager {
let baseURL = "https://api.github.com/users/"
private init() {}
func getUsers(for userName: String, completed: @escaping(Result<User,Error>) -> Void) {
// reqeust, response user data
}
}
request를 날리고 나면 이스케이핑 클로저로 (Result <User, Error> -> Void)를 넘겨줍니다.
이것을 typealias를 선언해서 사용해봅시다.
class NetworkManager {
let baseURL = "https://api.github.com/users/"
private init() {}
typealias userListClosure = (Result<User,Error>) -> Void
func getUsers(for userName: String, completed: @escaping userListClosure) {
// reqeust, response user data
}
}
함수 바로 위에 userListClosure이라고 선언해줬습니다.
이렇게 바로 위에 작성해 주면 userListClosure을 찾기 쉽지만,
NetworkManager클래스에 여러 함수가 있다면 typealias를 직관적으로 보기는 어려울 수도 있습니다.
이와 같이 굳이 typealias를 선언해야 하나 싶기도 합니다.
그런데 typealias가 사용돼서 편한 경우도 존재합니다.
Codable프로토콜이 그 예입니다.
이는 Encodable, Decodable이 합쳐진 것이죠.
두 프로토콜을 복합해서 Codable로 typealias를 선언해주어 일일이 작성해야 하는 번거로움을 줄일 수 있었습니다.
참고:
https://www.youtube.com/watch?v=JvynRYZEU-8
https://docs.swift.org/swift-book/ReferenceManual/Declarations.html
'Tech > Swift' 카테고리의 다른 글
스위프트5.0 Result타입 (0) | 2020.04.01 |
---|---|
스위프트 lazy 프로퍼티 (0) | 2020.03.31 |
Swift 5.2 Key Path Exressions as Functions (0) | 2020.03.04 |
문자열 결합 (0) | 2020.01.05 |
Int to String 그리고 String to Int (0) | 2020.01.05 |
- Total
- Today
- Yesterday
- objective-c
- 애니메이션
- objc
- 스위프트
- 문자열
- Deep learning
- 책 추천
- RX
- rxswift
- ReactiveX
- SWIFT
- 독서
- leetcode
- string
- swiftUI
- 딥러닝
- 스위프트UI
- wwdc
- 머신러닝
- Algorithm
- stanford SwiftUI
- Animation
- 책
- ios
- ARC
- 알고리즘
- 책 후기
- iOS SwiftUI
- swift5
- Xcode
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |