🔥 타입 별칭

304자
4분

Swift는 타입 별칭(Type Aliases)을 사용하여 기존 타입에 대한 대체 이름을 정의할 수 있게 해줍니다. 우리는 typealias 키워드를 사용하여 타입 별칭을 정의할 수 있어요.

swift
typealias AudioSample = UInt16
swift
typealias AudioSample = UInt16

위의 코드는 AudioSampleUInt16의 별칭으로 정의했습니다. 우리는 이렇게 정의한 별칭을 원래 이름을 사용할 수 있는 모든 곳에서 사용할 수 있답니다.

타입 별칭은 외부 소스에서 가져온 특정 크기의 데이터를 다룰 때와 같이, 문맥상 더 적절한 이름으로 기존 타입을 참조하고 싶을 때 유용하게 사용할 수 있어요. 예를 들어, 오디오 데이터를 다루는 프로그램에서 UInt16 대신 AudioSample이라는 이름을 사용하면 코드의 가독성과 의미전달력이 훨씬 높아지겠죠?

swift
var maxAmplitudeFound = AudioSample.min
// maxAmplitudeFound의 값은 이제 0이 됩니다.
swift
var maxAmplitudeFound = AudioSample.min
// maxAmplitudeFound의 값은 이제 0이 됩니다.

위의 코드는 AudioSample.min을 호출하여 실제로는 UInt16.min을 호출합니다. 이렇게 호출된 UInt16.minmaxAmplitudeFound 변수에 초기값 0을 제공하게 되는 거예요.

우리는 타입 별칭을 사용하여 코드의 가독성과 명확성을 크게 향상시킬 수 있습니다. 특히, 복잡한 타입을 사용할 때 타입 별칭을 활용하면 코드를 더 간결하고 이해하기 쉽게 만들 수 있어요.

swift
typealias Coordinates = (Int, Int)
 
let location: Coordinates = (42, 73)
// location의 타입은 (Int, Int)의 별칭인 Coordinates입니다.
swift
typealias Coordinates = (Int, Int)
 
let location: Coordinates = (42, 73)
// location의 타입은 (Int, Int)의 별칭인 Coordinates입니다.

위의 코드는 Coordinates(Int, Int) 튜플 타입의 별칭으로 정의했어요. 우리는 이렇게 정의한 별칭을 사용하여 (Int, Int) 대신 Coordinates를 사용할 수 있게 되었고, 이는 코드의 의미를 훨씬 더 명확하게 만들어 줍니다.

타입 별칭은 또한 복잡한 제네릭 타입이나 중첩된 타입을 간단한 이름으로 참조할 수 있게 해줘요.

swift
typealias StringDictionary<Value> = Dictionary<String, Value>
 
var dictionary: StringDictionary<Int> = ["A": 1, "B": 2]
// dictionary의 타입은 Dictionary<String, Int>의 별칭인 StringDictionary<Int>입니다.
swift
typealias StringDictionary<Value> = Dictionary<String, Value>
 
var dictionary: StringDictionary<Int> = ["A": 1, "B": 2]
// dictionary의 타입은 Dictionary<String, Int>의 별칭인 StringDictionary<Int>입니다.

위의 코드는 StringDictionaryDictionary<String, Value>의 별칭으로 정의했습니다. 우리는 이렇게 정의한 별칭을 사용하여 Dictionary<String, Int> 대신 StringDictionary<Int>를 사용할 수 있게 되었어요. 이는 코드를 더 간결하고 가독성 좋게 만들어 준답니다.

타입 별칭은 Swift 코드에서 널리 사용되는 강력한 기능이에요. 우리는 적절한 타입 별칭을 사용하여 코드의 의미를 명확하게 전달하고, 복잡한 타입을 간단한 이름으로 참조할 수 있게 됩니다. 이는 코드의 가독성과 유지보수성을 크게 향상시켜 준답니다. 여러분도 타입 별칭을 적극 활용하여 더 나은 Swift 코드를 작성해 보세요!

YouTube 영상

채널 보기
존 매카시가 들려주는 인공지능의 탄생 이야기
매번 ValidationPipe 복붙하세요? NestJS 전역 파이프로 한 번에 해결하기 | NestJS 가이드
Writer 펑터와 클라이슬리 카테고리 | 프로그래머를 위한 카테고리 이론
미들웨어 vs 가드, 왜 NestJS에서는 가드가 더 똑똑할까? | NestJS 가이드
class-validator 와 DTO | NestJS 가이드
NestJS 전역 에러 처리 | NestJS 가이드
리더 펑터 - 함수도 펑터다! | 프로그래머를 위한 카테고리 이론
입력을 전처리하는 Functor - Contravariant와 contramap 이해하기 | 프로그래머를 위한 카테고리 이론