250x250
반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- listview
- Extentsion
- designPattern
- ToDoRim
- UIAccessibility
- enumerations
- tip
- github
- swiftlint
- pubspec.yaml
- algorithm
- protocol
- pubspec
- COMMIT
- xcode
- reetcode
- it
- OSLog
- SwiftGen
- toyproject
- GIT
- Swift
- Equatable
- Widget
- IOS
- basic
- dart
- keyWindow
- Leetcode
- flutter
Archives
- Today
- Total
수니의 개발새발
[iOS/Swift] typealias 본문
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
반응형
'iOS - Swift' 카테고리의 다른 글
[iOS/Swift] Color Set으로 Custom Color관리하기 (with. SwiftGen) (0) | 2022.02.08 |
---|---|
[iOS/Swift] SwiftGen 적용하기 (pod 'SwiftGen') (0) | 2022.02.04 |
[iOS/Swift] Generic (0) | 2022.02.02 |
[iOS/Swift] Identifiable (0) | 2022.01.26 |
[iOS/Swift] Equatable (0) | 2022.01.25 |
Comments