Swift는 정적 타입 언어입니다. 즉, 모든 변수와 상수는 특정한 데이터 타입을 갖습니다. 이러한 타입 시스템 덕분에 Swift는 컴파일 시점에서 많은 오류를 미리 잡을 수 있으며, 프로그램의 안정성이 높아집니다.
Swift는 또한 타입 추론(type inference)이라는 강력한 기능을 제공합니다. 변수나 상수를 선언할 때 타입을 명시하지 않아도, 초기화하는 값에 따라 컴파일러가 자동으로 타입을 추측합니다.
1. 기본 데이터 타입
Swift에서 자주 사용하는 기본 타입은 다음과 같습니다.
타입 | 설명 | 예시 |
---|---|---|
Int |
정수 | let age = 30 |
Double |
실수(64비트 부동소수점) | let pi = 3.14159 |
Float |
실수(32비트 부동소수점) | let width: Float = 5.2 |
Bool |
논리값 (true/false) | let isActive = true |
String |
문자열 | let name = "Swift" |
2. 타입 추론
타입 추론을 통해 변수나 상수를 선언할 때 굳이 타입을 명시하지 않아도 됩니다.
let message = "Hello, Swift" // String으로 추론
let count = 10 // Int로 추론
let isDarkMode = false // Bool로 추론
let temperature = 23.5 // Double로 추론
위 코드에서 message
는 문자열이므로 자동으로 String
, count
는 정수형이므로 Int
로 추론됩니다. Swift는 대부분의 경우 정확하게 타입을 추론하므로, 코드가 더 간결해질 수 있습니다.
3. 명시적 타입 선언
타입을 명시하고 싶을 때는 콜론(:
)을 사용하여 변수명 다음에 타입을 적습니다.
let title: String = "타입 명시"
let ratio: Double = 0.618
let isLoggedIn: Bool = true
타입을 명시하면 코드의 의도를 보다 명확하게 전달할 수 있으며, 협업 시 가독성이 좋아지는 장점이 있습니다.
4. 타입 불일치 오류
Swift는 타입 안정성을 중요하게 여기므로, 서로 다른 타입 간의 연산이나 할당은 컴파일 오류를 발생시킵니다.
let age = 25
let height = 170.5
let total = age + height // 오류: Int + Double
위 코드는 Int
와 Double
을 바로 더하려고 했기 때문에 오류가 발생합니다. 타입을 일치시키기 위해 명시적인 형변환이 필요합니다.
let total = Double(age) + height // OK
5. 문자열 보간법과 타입
Swift는 문자열과 다른 타입을 결합할 때 문자열 보간법(String Interpolation)을 지원합니다.
let name = "Jin"
let age = 27
let greeting = "안녕하세요, \(name)님! 나이는 \(age)세입니다."
print(greeting)
출력 결과:
안녕하세요, Jin님! 나이는 27세입니다.
이 방식은 자동으로 Int
, Double
등의 타입을 문자열로 변환해주므로 매우 편리합니다.
6. 타입 별칭 (typealias)
Swift에서는 특정 타입에 별칭을 줄 수도 있습니다. 긴 타입명을 축약하거나 의미를 명확하게 하고 싶을 때 유용합니다.
typealias Score = Int
let mathScore: Score = 95
Score
는 사실 Int
타입이지만, 이렇게 별칭을 붙이면 코드의 의미를 더욱 분명하게 만들 수 있습니다.
마무리
Swift의 타입 시스템은 강력하며, 타입 추론과 결합되어 실용성과 안정성을 모두 제공합니다. 타입을 명확히 이해하고 활용하는 것은 Swift 개발의 기본입니다. 특히 다양한 기본 타입, 타입 추론과 명시적 선언, 형변환 등의 개념을 이해하고 있어야 오류 없는 코드를 작성할 수 있습니다.