[Swift] guard를 통한 type narrowing
작성일: 2026. 2. 9.
태그:
- guard를 통해 타입을 좁혀 guard 이후의 코드에는 타입을 안정적으로 “꺼낼 수 있다”.
- if let과의 차이
타입을 안정적으로 꺼내기
guard는 guard를 통과한 이후의 context에서 확정적으로 해당 함수가 안전한 타입임을 보장합니다.
guard는 런타임 + 컴파일 타임 모두 안전함을 보장합니다.
func getName(name: String?) {
guard let name = name else { return } // nil이면 이곳에서 guard에게 막힘
print(name); // 여기서부턴 name: String이 확정적
}
if let과의 차이
if let과 guard의 차이는 if let이 펼친 closure 내부에서만 타입 안정성이 보장된다는 점입니다.
func getName2(name: String?) {
if let name = name {
name // name: String
}
name // name: String?
}