안녕하세요! 오늘은 속성 3편으로 돌아왔습니다. 바로 Type Properties입니다.
지금까지 소개했던 속성은 모두 인스턴스에 속한 속성이었습니다. 새로운 인스턴스를 생성할 때 마다 각 인스턴스에 속한 속성 값이 생겼습니다.
이와 다르게 타입 속성은 타입 자체에 속한 속성입니다.
자세히 알아보겠습니다!

You can also define properties that belong to the type itself, not to any one instance of that type. There will only ever be one copy of these properties, no matter how many instances of that type you create. These kinds of properties are called type properties. (공식문서)
자 이제 해석타임입니다!
타입 속성은 인스턴스가 아닌 타입에 속한 속성입니다. 따라서 얼마나 많은 인스턴스를 생성하든간에 타입에 하나만 존재하는 속성인 것이죠.
타입 속성은 'static'(class는 일부만 가능) 키워드를 추가하여 사용하면 됩니다. 타입 속성 값을 이용할 때는 타입 이름과 접근 연산자를 써서 사용하면 됩니다.
앞에서 말했다시피 타입 속성은 타입에 속하는 속성이므로 힙이나 스택 영역에 저장되지 않고 데이터 영역에 저장된다는 거 !!! 매우 중요합니다.
class Circle {
static var pi: Double = 3.141526
}
Circle.pi // 3.141526
그럼 어떨 때 사용하면 좋을까요?
- 특정 타입의 모든 인스턴스에게 공통적으로 사용되는 보편적인 속성일 때
실생활에 예시를 들어보면, 원주율 값인 pi 값이나 환율 값이 될 수 있겠습니다.
이처럼, 어떤 인스턴스인지 상관없이 공통적으로 사용할 수 있는 값인 경우 타입 속성을 사용하기 적합합니다.
앞 포스팅에서 저장 속성과 계산 속성에 대해서 배웠습니다. 타입 속성은 저장 속성이 될 수 있고 계산 속성이 될 수 있습니다. 각각에 대해서 특징을 알아보겠습니다.
class Circle {
static var: Double = 3.141526
}
class Circle {
static var: Double = 3.141526
static var multiPi: Double {
return pi * 2
}
}