Class downcasting (as) in Swift

class Shape { }

class Square: Shape { }

class RedSquare: Square { }

let square = Square()

let shape = square as Shape
//shape is Shape

let redSquare = square asRedSquare
//redSquare is nil