Неправильный общий тип в Swift
После запуска следующего кода в playgroud, почему значение x равно 2? Что-то не так с универсальным типом swift и оператором "is"? Класс Item {}
class Campaign: Item {}
class AdGroup : Item {}
class A<T: Item> {
func val() -> Int{
let item = T()
if item is Campaign {
return 1
} else {
return 2
}
}
}
var m = A<Campaign>()
let x = m.val()