**타입 캐스팅은
⇒ Swift에서 타입 캐스팅은 "is"나 "as" 연산자로 구현하며,
타입 캐스팅을 사용하여 타입이 프로토콜에 적합한지 여부도 확인할 수 있다
타입을 체크하는 연산자 표현식이 Type과 동일하거나, 표현식이 Type의 서브 클래스인 경우 → true 그 외에는 false
⇒ true가 나오는 경우!
let char: Character = "A"
char is Character // true
char is String // false
let bool: Bool = true
bool is Bool // true
bool is Character // false
class SoptMember { }
class PartLeader: SoptMember { }
class SoptLeader: SoptMember { }
let ayoLeader:PartLeader = .init()
ayoLeader is PartLeader // true
ayoLeader is SoptMember // true -> PartLeader는 SoptLeader의 서브 클래스임으로 true가 반환!
// **타입 캐스팅을 통해 확인하면서 조건문을 분기**
let people: [SoptMember] = [
SoptMember.init(name: "류희재"),
PartLeader.init(name: "김승찬"),
SoptLeader.init(name: "김효재")
]
해당 인스턴스를 슈퍼 클래스나 하위 클래스로 취급하는 연산자 표현식이 변환할 Type과 호환된다면, 변환할 Type으로 캐스팅된 인스턴스를 리턴한다
as 연산자를 활용하기 위해선 일단 업캐스팅, 다운캐스팅을 먼저 알아봐야 한다.
서브 클래스 인스턴스를 "슈퍼 클래스의 타입"으로 참조