class BaseClass{}
class AClass : BaseClass{}
class BClass : BaseClass{}

//var b : BaseClass = AClass()
var b : BaseClass = BClass()

if let p = b as? AClass{
print("OK:(type(of:p))")
}else{
print("else")
}

switch b{
case let p as AClass:
print("OK:(type(of:p))")
default:
print("default")
break
}

if文では、as? switch文では、asと記述しますが、何かしっくりきません。
それでいて、if文のpは、Optional型とはならない。
if文も asでもいいのではと思ってしまいます。

たいてい、そこには理由があるのですが、ご指摘お願いします。