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 참고 포스팅
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> = []
🙋🏻♀️ 참고
728x90
반응형